java8 Collectors收集器的简单方法

案例变量:menu为一个菜单列表(list),内含有name(名字)、calories(热量)、type(类型)属性。


1)    toList()                                List                    将流中所有的项目收集到一个List

使用示例:

List dishes = menuStream.collect(toList());

2)    toSet()                                Set                    将流中所有项目收集到一个Set,删除重复项

使用示例

Set dishes = menuStream.collect(toSet());

3)    toCollection()                     Collection         将流中所有项目收集到给定的供应源创建的集合

使用示例

Collection dishes = menuStream.collect(toCollection(),ArrayList::new);

4)    counting()                          Long                        计算流中元素个数

使用示例                   

long howManyDishes = menuStream.collect(counting());

5)    summingInt()                     Integer                    对流中项目的一个整数属性求和

使用示例

int totalCalories = menuStream.collect(sumingInt(Dish::getCalories))

6)    averagingInt()                    Double                    计算流中项目Integer属性的平均值                                            

使用示例

double avgCalories = menuStream.collect(averagingInt(Dish::getCalories));

7)    summarizingInt()               IntSummaryStatistics     收集关于流中项目Integer 属性的统计值,例如最大、最小、总和与平均值

使用示例   

IntSummaryStatistics = menuStream.collect(summarizingInt(Dish::getColories));
8)    join()                                   String                       连接对流中每个项目调用toString方法所生成的字符串

使用示例

String shortMenu = menuStream.map(Dish::getName).collect(joining(","));

9)    maxBy()                               Optional            一个包裹了流中按照给定比较器选出的最大元素的Optional,或如果流为空则为Optional.empty()

使用示例                                       

Optional  fattest = menuStream.collect(maxBy(comparingInt(Dish::getCalories)));

10)    minxBy()                           Optional            一个包裹了流中按照给定比较器选出的最x小元素的Optional,或如果流为空则为Optional.empty()

使用示例                                       

Optional  fattest = menuStream.collect(minBy(comparingInt(Dish::getCalories)));

11)    reducing()                         归约操作产生的类型        从一个座位累加器的初始值开始,利用BinaryOperator 与流中元素租个结合,从而将流归约为单个值。  

使用示例

int totalCalories = menuStream.collect(reducing(0,Dish::getCalories,Integer::sum));

12)    collectingAndThen()         转换函数返回类型            包裹另一个收集器,对其结果应用转换函数

使用示例

int howManyDishes = menuStream.collect(collectingAndThen(toList(),List::size));

13)    groupingBy()                    Map>            根据项目的一个属性的值对流中的项目作分组,并将属性值作为结果Map的键

使用示例

Map> dishesByType = menuStream.collect(groupingBy(Dish::getType));

14) partitioningBy()                    Map>    根据对流中每个项目应用谓词的结果来对项目进行分区

使用示例

Map> vegetarianDishes = menuStream.collect(partitioningBy(Dish::isVegetarian));


你可能感兴趣的:(java8实战)