JAVA8之collect总结(给自己)

一,collect是一个终端操作,它接收的参数是将流中的元素累积到汇总结果的各种方式(称为收集器)

二,预定义收集器包括将流元素归约和汇总到一个值.如下

工厂方法

返回类型

用于

toList

List

把流中所有元素收集到List中

示例:List

menus=Menu.getMenus.stream().collect(Collectors.toList())

toSet

Set

把流中所有元素收集到Set中,删除重复项

示例:Set

menus=Menu.getMenus.stream().collect(Collectors.toSet())

toCollection

Collection

把流中所有元素收集到给定的供应源创建的集合中

示例:ArrayList

menus=Menu.getMenus.stream().collect(Collectors.toCollection(ArrayList::new))

Counting

Long

计算流中元素个数

示例:Long count=Menu.getMenus.stream().collect(counting);

SummingInt

Integer

对流中元素的一个整数属性求和

示例:Integer count=Menu.getMenus.stream().collect(summingInt(Menu::getCalories))

averagingInt

Double

计算流中元素integer属性的平均值

示例:Double averaging=Menu.getMenus.stream().collect(averagingInt(Menu::getCalories))

Joining

String

连接流中每个元素的toString方法生成的字符串

示例:String name=Menu.getMenus.stream().map(Menu::getName).collect(joining(“, ”))

maxBy

Optional

一个包裹了流中按照给定比较器选出的最大元素的optional
如果为空返回的是Optional.empty()

示例:Optional

fattest=Menu.getMenus.stream().collect(maxBy(Menu::getCalories))

minBy

Optional

一个包裹了流中按照给定比较器选出的最大元素的optional
如果为空返回的是Optional.empty()

示例: Optional

lessest=Menu.getMenus.stream().collect(minBy(Menu::getCalories))

Reducing

归约操作产生的类型

从一个作为累加器的初始值开始,利用binaryOperator与流中的元素逐个结合,从而将流归约为单个值

示例:int count=Menu.getMenus.stream().collect(reducing(0,Menu::getCalories,Integer::sum));

collectingAndThen

转换函数返回的类型

包裹另一个转换器,对其结果应用转换函数

示例:Int count=Menu.getMenus.stream().collect(collectingAndThen(toList(),List::size))

groupingBy

Map>

根据流中元素的某个值对流中的元素进行分组,并将属性值做为结果map的键

示例:Map> menuType=Menu.getMenus.stream().collect(groupingby(Menu::getType))

partitioningBy

Map>

根据流中每个元素应用谓语的结果来对项目进行分区

示例:Map> menuType=Menu.getMenus.stream().collect(partitioningBy(Menu::isType));


三,预定义收集器可以用groupby对流中元素进行分组或者用partitioningBy进行分区

四,收集器可以高效的复合起来,进行多级分组,多级分区和归约

五,可以自己实现collector接口进行定义自己的收集器

你可能感兴趣的:(java8.0)