Java 8系列:
Java 8系列之Lambda表达示
Java 8系列之StreamApi
Java 8系列之Collector
Java 8系列之Optional
Java 8系列之Future
Collector组成
Supplier<A> supplier(): 创建一个容器
BiConsumer<A, T> accumulator(): 将元素添加到容器中
BinaryOperator<A> combiner(): 将两个容器合并为一个结果容器
Function<A, R> finisher(): 对结果容器作相应的变换
Set<Collector.Characteristics>:对上述过程做优化和控制
以toList()方法为例讲解下它的实现
Collectors.toList()的源码
public static <T>
Collector<T, ?, List<T>> toList() {
return new CollectorImpl<>((Supplier<List<T>>) ArrayList::new, List::add,
(left, right) -> {
left.addAll(right); return left; },
CH_ID);
}
CollectorImpl(Supplier<A> supplier