Использование конгруэнтных лямбда-выражений типа функции в 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) метод (два параметра) и может быть использован в качестве функции аккумулятора в методе сбора.

Как вы видите, у меня явно нет понимания и я ценю любые объяснения.

Ответы на вопрос(2)

Ваш ответ на вопрос