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

Класс BiFunction

Класс BiFunction представляет собой функциональный интерфейс, который описывает функцию, принимающую два аргумента и возвращающую результат. В первый параметр (первый обобщенный тип) мы передаем тип первого входного аргумента, во второй параметр - тип второго входного аргумента, а в третий - тип возвращаемого значения. Основной метод этого интерфейса - apply, который применяет функцию к переданным аргументам. Также у BiFunction есть метод andThen, позволяющий объединить текущую функцию с другой функцией, применяемой к результату.

Синтаксис

BiFunction<T, U, R>

Здесь T - тип первого аргумента, U - тип второго аргумента, R - тип возвращаемого значения.

Пример

Давайте создадим функцию, которая складывает два числа:

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

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

5

Пример

Давайте создадим функцию, которая объединяет две строки:

import java.util.function.BiFunction; public class Main { public static void main(String[] args) { BiFunction<String, String, String> concat = (a, b) -> a + b; String res = concat.apply("abcde", "12345"); System.out.println(res); } }

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

"abcde12345"

Пример

Давайте используем метод andThen, чтобы после сложения умножить результат на 2:

import java.util.function.BiFunction; import java.util.function.Function; public class Main { public static void main(String[] args) { BiFunction<Integer, Integer, Integer> sum = (a, b) -> a + b; Function<Integer, Integer> mult = x -> x * 2; int res = sum.andThen(mult).apply(2, 3); System.out.println(res); } }

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

10

Пример

Давайте применим BiFunction для поэлементного сложения двух списков через стримы:

import java.util.List; import java.util.stream.Collectors; import java.util.stream.IntStream; public class Main { public static void main(String[] args) { List<Integer> list1 = List.of(1, 2, 3, 4, 5); List<Integer> list2 = List.of(10, 20, 30, 40, 50); List<Integer> res = IntStream.range(0, list1.size()) .mapToObj(i -> list1.get(i) + list2.get(i)) .collect(Collectors.toList()); System.out.println(res); } }

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

[11, 22, 33, 44, 55]

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

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