我们知道Java 8引入了一个新的Stream API,并且java.util.stream.Collector
是定义如何聚合/收集数据流的接口.
但是,Collector接口的设计如下:
public interface Collector<T, A, R> {
Supplier<A> supplier();
BiConsumer<A, T> accumulator();
BinaryOperator<A> combiner();
Function<A, R> finisher();
}
Run Code Online (Sandbox Code Playgroud)
为什么它的设计不符合以下规定?
public interface Collector<T, A, R> {
A supply();
void accumulate(A accumulator, T value);
A combine(A left, A right);
R finish(A accumulator);
}
Run Code Online (Sandbox Code Playgroud)
后者更容易实现.将它设计为前者的考虑是什么?