概述
上文我们介绍了JDK8新添加的Stream流接口,借助Stream配合拉姆达表达式,我们可以很方便的处理流对象。
针对流的聚合操作,Stream有一个对应的收集器类Collectors,通过Stream中的collect和collectingAndThen方法,我们可以借助收集器类聚合流中的数据,例如将元素累积到集合中,并根据各种标准对元素进行汇总,分类等操作。
二. 举个例子?
1 | //获取String集合 |
如代码所示,我们可以很方便的通过Collectors类对被处理的流数据进行聚合操作,包括并不仅限与将处理过的流转换成集合
三. 如何使用Collectors?
1. Collectors类中提供的方法
总结一下,就是以下几类方法:
1.1 转换成集合:toList(),toSet(),toMap(),toCollection()
1.2 将集合拆分拼接成字符串:joining()
1.3 求最大值、最小值、求和、平均值 :maxBy(),minBy(),summingInt(),averagingDouble()
1.4 对集合分组:groupingBy(),partitioningBy()
1.5 对数据进行映射:mapping()
2. Collectors类方法源码
1 | public final class Collectors { |
四. 实例
1 | //接下来的示例代码基于此集合 |
1. 将流数据转换成集合
1 | //转换成list集合 |
2. 将集合拆分拼接成字符串
1 | //joining |
3. 求最大值、最小值、求和、平均值
1 | List<Integer> list = Arrays.asList(1, 2, 3, 4, 5); |
虽然这样也可以,但是明显IntSummaryStatistics要更灵活点
4. 对集合分组
1 | Map<Integer, List<String>> map = strings.stream() |
5.对数据进行映射
1 | String str = strings.stream().collect(Collectors.mapping( |
。