1Import
全部引入
根据需要引入
2Collectors.toList()
将Stream所有元素转化成list集合
3Collectors.toSet()
将Stream所有元素转化成set集合。
set不存在相同重复元素
4Collectors.toCollection()
使用toSet 和toList不能自定义Collection实现,toCollection可以指定
5Collectors.toMap()
将Stream元素转成Map实例,需要keyMapper和valueMapper
6Collectors.collectingAndThen()
将Stream所有元素收集后执行指定动作
转成list
7Collectors.joining()
根据指定方式链接元素
8Collectors.counting()
计量Stream的元素个数
9Collectors.summarizingDouble/Long/Int()
返回统计信息
10Collectors.averagingDouble/Long/Int()
平均信息
11Collectors.summingDouble/Long/Int()
求和信息
12Collectors.maxBy()/minBy()
返回最大或最小元素
13Collectors.groupingBy()
根据属性分组,将结果存储在Map中。
14Collectors.partitioningBy()
跟groupingBy相似,但是特殊在key是Boolean类型,value是Collecitons
15Collectors.teeing()
将最大和最小元素使用依次操作就可以实现
16自定义Collectors
(1)需要实现的接口
public interface Collector<T, A, R> {...}
T-可供收集的物体类型,
A-可变累加器对象的类型,
R-最终结果的类型。
(2)例子
(3)由于需要用于内部收集操作处理的可变集合,所以不能使用不变集为此,我们需要使用其他一些可变集合或任何其他类,这些类可以为我们临时对象。在这种情况下,我们将继续使用ImmutableSet.Builder现在我们需要实现5种方法:
(4)详解:
supplier()方法 返回一个Supplier实例 用来生成一个空的accumulator 实例
accumulator()方法 返回一个函数实例用来在一个实例中添加新的元素
combiner()方法返回一个函数用来合并两个实例
finisher()用来转换类型
characteristics()方法提供附加信息流
(5)实现类如下
(6)测试: