Java8InAction学习笔记(三) - 18965050/Java8InAction GitHub Wiki

Collector

Collector(收集器)用于Stream的collect()方法,java8中提供了Collector的工厂类Collectors,用于不同的操作.比如

  • reduce方式的操作
    • join
    • minBy/maxBy
    • counting
    • ......
  • group方式的操作
    • groupingBy: groupBy方法通过outerGroup,innerGroup可实现递归分组
  • partition方式的操作: partition是group的一种特例, 以Predicate作为参数,表示结果map中的key只能以boolean的true或false作为key
    • partitionBy

Collectors静态方法汇总

Collector静态方法-1 Collector静态方法-2 Collector静态方法-3

Collector接口

接口定义如下:

public interface Collector<T, A, R> {
	//返回一个用于accumulator操作的对象
	Supplier<A> supplier();

	//执行reduction操作
	BiConsumer<A, T> accumulator();

	//accumulator处理完后做的事
	Function<A, R> finisher();

	//用于两个集合的操作
	BinaryOperator<A> combiner();

	/**用于定义reduct行为阶段.包括:
	 * UNORDERED: 当进行accumulate的时候, 元素顺序不会变
	 * CONCURRENT: 是否能进行并发调用
	 * IDENTITY_FINISH: accumulate是否为最终的结果
	**/
	Set<Characteristics> characteristics();
}

其中:

  • T: stream.collect()调用中元素的类型
  • A: accumulator的类型
  • R: stream.collect()调用返回对象类型
⚠️ **GitHub.com Fallback** ⚠️