java.util.stream.Collectors
目录
java.util.stream.Collectors
1. toList
2. toSet
3. toCollection
4. counting
5. summingInt
6. averagingInt
7. summarizingInt
8. joining
9. minBy
10. maxBy
11. reducing
12. collectingAndThen
13. groupingBy
14. partitioningBy
1. toList
返回类型:List<T> ;
用途:用于把流中所有项目收集到一个 List;
示例:
List<Dish> dishes = menuStream.collect(toList());
2. toSet
返回类型:Set<T> ;
用途:用于把流中所有项目收集到一个 Set,删除重复项;
示例:
Set<Dish> dishes = menuStream.collect(toSet());
3. toCollection
返回类型:Collection<T> ;
用途:用于把流中所有项目收集到给定的供应源创建的集合;
示例:
Collection<Dish> dishes = menuStream.collect(toCollection(), ArrayList::new);
4. counting
返回类型:Long ;
用途:用于计算流中元素的个数;
示例:
long howManyDishes = menuStream.collect(counting());
5. summingInt
返回类型:Integer ;
用途:用于对流中项目的一个整数属性求和;
示例:
int totalCalories = menuStream.collect(summingInt(Dish::getCalories));
6. averagingInt
返回类型:Double ;
用途:用于计算流中项目 Integer 属性的平均值。
示例:
double avgCalories = menuStream.collect(averagingInt(Dish::getCalories));
7. summarizingInt
返回类型:IntSummaryStatistics ;
用途:用于收集关于流中项目 Integer 属性的统计值,例如最大、最小、总和与平均值;
示例:
IntSummaryStatistics menuStatistics=menuStream.collect(summarizingInt(Dish::getCalories));
8. joining
返回类型:String ;
用途:用于连接对流中每个项目调用 toString 方法所生成的字符串;
示例:
String shortMenu = menuStream.map(Dish::getName).collect(joining(", "));
9. minBy
返回类型:Optional<T> ;
用途:用于一个包裹了流中按照给定比较器选出的最小元素的 Optional,或如果流为空则为 Optional.empty();
示例:
Optional<Dish> lightest = menuStream.collect(minBy(comparingInt(Dish::getCalories)));
10. maxBy
返回类型:Optional<T> ;
用途:用于一个包裹了流中按照给定比较器选出的最大元素的 Optional,或如果流为空则为 Optional.empty()。
示例:
Optional<Dish> fattest = menuStream.collect(maxBy(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<K, List<T>> ;
用途:根据项目的一个属性的值对流中的项目作问组,并将属性值作为结果 Map 的键;
示例:
Map<Dish.Type,List<Dish>> dishesByType = menuStream.collect(groupingBy(Dish::getType));
14. partitioningBy
返回类型:Map<Boolean,List<T>> ;
用途:根据对流中每个项目应用谓词的结果来对项目进行分区;
示例:
Map<Boolean, List<Dish>> vegetarianDishes =
menuStream.collect(partitioningBy(Dish::isVegetarian));
(注:本文章参看自《Java 8 实战》厄马(Raoul-Gabriel Urma) / 弗斯科(Mario Fusco) / 米克罗夫特(Alan Mycroft))