collector源码分析与收集器核心

collect: 收集器

Collector作为collect方法的参数

Collector是一个接口

是一个可变的汇聚操作,作用是将输入参数给累计到一个可变的结果容器中,它会在所有元素都处理完毕后,将累计后的结果转换为一个最终的表示(这是一个可选操作);

支持串行与并行两种方式执行。

比如说:将元素累积到Collection集合中,使用StringBuilder字符串进行拼接,计算sum、min、max或average等汇总信息,计算透视表 例如得到分组后每个“卖家的最大值交易” 

Collectors本身提供了关于Collector的常见汇聚实现,Collectors本身实际上是一个工厂。

一个Collectors由四个函数来指定的,将条目累积到可变结果容器中,并可选择执行结果的最终转换

1.创建新的结果容器supplier()

Supplier<A> supplier();

2.将新数据元素合并到结果容器accumulator() 将一个值折叠到可变的结果容器中

BiConsumer<A, T> accumulator();

3.将两个结果容器合并为一个combiner()

BinaryOperator<A> combiner();

4.在容器上执行可选的最终转换finisher()

Function<A, R> finisher();

为了确保串行与并行操作结果的等价性,Collector函数需要满足两个条件:identity(同一性) 

associativity(结合性)

猜你喜欢

转载自www.cnblogs.com/alter888/p/12734637.html