Collectors
- Collect : 收集器
- Collector 做为collect方法的参数
- Collector是一个接口,他是一个可变的汇聚操作,将输入的元素积累到一个可变的结果容器内;他会在所有元素处理完毕后,将积累的结果转换为一个最终的表示(这是一个可选的操作),它支持穿行和并行两种方式
- Collectors本身提供了关于Ccollect的常见汇聚实现,Collectorts本身实际上一个工厂.
- Collector由四个函数组成
- Supplier
- 创建并返回一个新的结果容器
- BiConsumer<A , T> (accumulator 累加器)
- 将新的元素合并到一个结果容器(结果容器由Supplier创建)
- BinaryOperator(combiner 结合)
- 将两个结果容器合并为一个(并发)
- Function<A,R>(finisher 整理)
- 从中间累积的类型进行最终的转换
- Supplier
- 为了确保串行和并行操作结果的等价性,Collector函数需要满足两个条件: identity(同一性)与associativty(结合性)
- a == combiner.apply(a, supplier.get())