Использование конгруэнтных лямбда-выражений типа функции в Java 8
Я борюсь с определением и использованием
Stream.collect(Supplier<R> supplier, BiConsumer<R,? super T> accumulator, BiConsumer<R,R> combiner)
метод в Java 8.
Подпись метода включаетBiConsumer набранные параметры. BiConsumer FunctionalInterface определяет один функциональный методпринять (объект, объект), Насколько я понимаю, теперь я могу использовать любое лямбда-выражение, котороеконгруэнтный к этому функциональному интерфейсу.
Но пример, упомянутый в Stream.collectJavaDoc например,
List<String> asList = stringStream.collect(ArrayList::new, ArrayList::add, ArrayList::addAll);
я не понимаю почемуArrayList.add (E e) (один параметр) совпадает сBiConsumer.accept (T t, U u) метод (два параметра) и может быть использован в качестве функции аккумулятора в методе сбора.
Как вы видите, у меня явно нет понимания и я ценю любые объяснения.