РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
528 of 1163 menu

Класс BiConsumer

Класс BiConsumer - это функциональный интерфейс из пакета java.util.function, который представляет операцию, принимающую два входных аргумента и не возвращающую никакого результата. В первый параметр мы передаем первый аргумент типа T, во второй - второй аргумент типа U. Основное применение BiConsumer находит в stream-API, например, в методе forEach для коллекций типа Map, где нужно обработать пару ключ-значение.

Функциональный интерфейс BiConsumer содержит один абстрактный метод accept, который и выполняет основную логику, а также имеет стандартный метод andThen для объединения двух операций.

Синтаксис

@FunctionalInterface public interface BiConsumer<T, U> { void accept(T t, U u); default BiConsumer<T, U> andThen(BiConsumer<? super T, ? super U> after); }

Пример

Давайте создадим BiConsumer, который складывает два числа и выводит результат на экран:

import java.util.function.BiConsumer; public class Main { public static void main(String[] args) { BiConsumer<Integer, Integer> sum = (a, b) -> System.out.println(a + b); sum.accept(2, 3); } }

Результат выполнения кода:

5

Пример

Давайте используем BiConsumer для перебора элементов Map с помощью метода forEach:

import java.util.Map; import java.util.function.BiConsumer; public class Main { public static void main(String[] args) { Map<String, Integer> map = Map.of("a", 1, "b", 2, "c", 3); BiConsumer<String, Integer> printer = (key, value) -> System.out.println(key + " = " + value); map.forEach(printer); } }

Результат выполнения кода:

a = 1 b = 2 c = 3

Пример

Давайте объединим две операции с помощью метода andThen, чтобы сначала вывести сумму, а затем произведение двух чисел:

import java.util.function.BiConsumer; public class Main { public static void main(String[] args) { BiConsumer<Integer, Integer> sum = (a, b) -> System.out.println("Sum: " + (a + b)); BiConsumer<Integer, Integer> product = (a, b) -> System.out.println("Product: " + (a * b)); BiConsumer<Integer, Integer> combined = sum.andThen(product); combined.accept(2, 3); } }

Результат выполнения кода:

Sum: 5 Product: 6

Пример

Давайте применим BiConsumer совместно со stream-API для обработки пар элементов. Создадим поток из строк и для каждой строки применим операцию, принимающую два аргумента:

import java.util.List; import java.util.function.BiConsumer; public class Main { public static void main(String[] args) { List<String> list = List.of("a", "b", "c", "d", "e"); BiConsumer<String, Integer> printer = (str, index) -> System.out.println(index + ": " + str); for (int i = 0; i < list.size(); i++) { printer.accept(list.get(i), i); } } }

Результат выполнения кода:

0: a 1: b 2: c 3: d 4: e

Смотрите также

  • класс BiConsumer,
    который представляет операцию с двумя аргументами
  • метод accept,
    который выполняет операцию над двумя аргументами
  • класс Consumer,
    который принимает один аргумент
  • класс BiFunction,
    который принимает два аргумента и возвращает результат
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить