Мы знаем, что Java 8 представляет новый Stream API, а java.util.stream.Collector
- это интерфейс для определения того, как агрегировать/собирать поток данных.
Однако интерфейс коллектора выполнен таким образом:
public interface Collector<T, A, R> {
Supplier<A> supplier();
BiConsumer<A, T> accumulator();
BinaryOperator<A> combiner();
Function<A, R> finisher();
}
Почему он не сконструирован так, как показано ниже?
public interface Collector<T, A, R> {
A supply();
void accumulate(A accumulator, T value);
A combine(A left, A right);
R finish(A accumulator);
}
Последний гораздо проще реализовать. Каково было учесть его в качестве первого?