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

Класс BinaryOperator

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

Интерфейс имеет один абстрактный метод apply, унаследованный от BiFunction, и несколько статических методов: minBy, maxBy. Также доступен унаследованный метод andThen.

Синтаксис

@FunctionalInterface public interface BinaryOperator<T> extends BiFunction<T, T, T> { T apply(T t, T u); }

Запись типа при объявлении переменной:

BinaryOperator<T> op = (a, b) -> ...;

Пример

Давайте сложим все числа stream-а с помощью BinaryOperator и метода reduce:

import java.util.List; import java.util.function.BinaryOperator; public class Main { public static void main(String[] args) { BinaryOperator<Integer> sum = (a, b) -> a + b; List<Integer> list = List.of(1, 2, 3, 4, 5); int res = list.stream().reduce(0, sum); System.out.println(res); } }

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

15

Пример

Давайте найдем максимальный элемент stream-а, используя статический метод maxBy:

import java.util.List; import java.util.function.BinaryOperator; public class Main { public static void main(String[] args) { BinaryOperator<Integer> max = BinaryOperator.maxBy(Integer::compareTo); List<Integer> list = List.of(1, 2, 3, 4, 5); int res = list.stream().reduce(0, max); System.out.println(res); } }

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

5

Пример

Давайте объединим строки stream-а в одну с помощью BinaryOperator:

import java.util.List; import java.util.function.BinaryOperator; public class Main { public static void main(String[] args) { BinaryOperator<String> concat = (a, b) -> a + b; List<String> list = List.of("a", "b", "c", "d", "e"); String res = list.stream().reduce("", concat); System.out.println(res); } }

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

"abcde"

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

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