В Java 8 и более поздних версиях, функциональный интерфейс BiConsumer<T,U> определяет метод accept с двумя аргументами, без возвращаемого значения, что позволяет передавать функцию, которая принимает два аргумента и выполняет какие-то действия. Это полезно, когда необходимо передать функцию для выполнения операций на парах значений. Например, если у Вас есть коллекция, и вы хотите пройти через каждый элемент, для выполнения некоторых операций над множеством значений с помощью forEach(), можно использовать BiConsumer для выполнения операций над элементами коллекции. Вот пример использования BiConsumer: List<String> names = Arrays.asList("Alex", "Bob", "Charlie");
BiConsumer<Integer, String> biConsumer = (index, name) -> System.out.println(index + "-" + name);
IntStream.range(0, names.size()).forEach(i -> biConsumer.accept(i, names.get(i))); Этот пример выведет: 0-Alex
1-Bob
2-Charlie где BiConsumer используется для построения значения пары, содержащего индекс элемента списка и сам эл