Collectors类中的静态工厂方法

工厂方法 返回类型 用于
toList List<T>

 把流中的所有数据元素收集到List集合中。

stream.collect(toList());

 toSet Set<T>

 把流中的所有数据元素收集到Set集合中,以为Set自身的特性,即不会出现重复

项。stream.collect(toSet());

 toCollection Collection<T>

 把流中的数据元素收集你所指定的集合中,

list.stream().collect(toCollection(ArrayList::new));

 counting Long

 计算流中元素的个数,list.stream().collect(counting());

 summingInt Integer

 对流中所有元素上指定的整数属性求和,

list.stream().collect(summingInt(User::getAge));

 averagingInt Double

 对流中所有元素上指定的整数属性求平均数,

list.stream().collect(averagingInt(User::getAge));

 summarizingInt

IntSummaryStatistics

 收集流中所有元素上指定的整数属性的统计值,包括最大值、最小值、总数、平均值。

list.stream().collect(summarizingInt(User::getAge));

joining String

 连接流中元素上指定的属性,

list.stream().map(s -> s).collect(joining("-"))

 maxBy Optional<T>

使用指定的比较器去比较得到流中所有元素上指定属性的最大值,

list.stream().collect(maxBy(Comparator.comparing(String::length)))

 minBy Optional<T> 使用指定的比较器去比较得到流中所有元素上指定属性的最小值,

list.stream().collect(minBy(Comparator.comparing(String::length)))

 reducing 规约操作产生的类型

从一个累加器的初始值开始,使用BinaryOperator与流中的元素逐个集合,最后将流规约为单个值。

list.stream().collect(reducing(0, UserVO::getAge, Integer::sum));

 collectingAndThen  转换函数返回的类型

 对最终结果转换为另一种类型,

list.stream().collect(collectingAndThen(Collectors.toList(), List::size));

 groupingBy  Map<k, List<T>>

 根据指定的属性来分组,

views.stream().collect(groupingBy(String::length));

 partitioningBy  Map<boolean, List<T>>

 根据指定的属性来分区,

 views.stream().collect(partitioningBy(str -> str.startsWith("ws"))

posted @ 2019-04-29 17:10  零度的冰  阅读(237)  评论(0编辑  收藏  举报