Метод reduce() в Java Stream API

Метод reduce() в Java Stream API используется для выполнения операции свертки (reduction), которая объединяет элементы потока в одно значение, применяя заданную бинарную операцию. Этот метод полезен для выполнения таких операций, как суммирование, нахождение максимума или минимума, умножение и т.д.

Основны метода reduce()

  1. Синтаксис:

T reduce(T identity, BinaryOperator<T> accumulator);

Optional<T> reduce(BinaryOperator<T> accumulator);

T reduce(T identity, BinaryOperator<T> accumulator, BinaryOperator<T> combiner);

  1. Параметры:
    • identity: начальное значение, которое используется в качестве стартовой точки для свертки. Если поток пуст, это значение возвращается как результат.
    • accumulator: функция, которая принимает два параметра: частичный результат и текущий элемент потока, и возвращает новый частичный результат.
    • combiner: используется в параллельных потоках для объединения результатов из разных под-потоков.
  2. Возвращаемое значение:
    • Может быть значением типа T или Optional<T>, в зависимости от того, указан ли начальный элемент (identity).

Примеры использования

  1. Суммирование чисел:

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

int sum = numbers.stream().reduce(0, Integer::sum);

System.out.println(sum); // Output: 15

  1. Нахождение максимального значения:

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

int max = numbers.stream().reduce(Integer.MIN_VALUE, Integer::max);

System.out.println(max); // Output: 5

  1. Объединение строк:

List<String> words = Arrays.asList(“Hello”, “World”);

String combined = words.stream().reduce(“”, (a, b) -> a + ” ” + b);

System.out.println(combined.trim()); // Output: Hello World

Заключение

Метод reduce() позволяет выполнять свертку элементов потока в одно значение, применяя заданную бинарную операцию, что полезно для таких задач, как суммирование, нахождение максимума или объединение строк. 

Каталог и рейтинг онлайн-курсов программирования Джава
Logo