工厂方法 | 返回类型 | 用于 |
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")) |