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

Метод reducing

Метод reducing класса Collectors выполняет сведение элементов потока в один результат. Он последовательно применяет бинарную операцию к элементам потока, начиная с начального значения. Первым параметром метод принимает начальное значение (identity), вторым - функцию-аккумулятор, которая принимает промежуточный результат и текущий элемент и возвращает новое значение. Существует перегрузка без начального значения, возвращающая Optional, а также перегрузка с функцией-маппером, преобразующей элементы перед сведением.

Синтаксис

Collectors.reducing(identity, accumulator) Collectors.reducing(identity, mapper, accumulator) Collectors.reducing(accumulator)

Пример

Давайте найдём сумму всех чисел списка, используя начальное значение 0 и операцию сложения:

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

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

15

Пример

Давайте найдём произведение всех чисел списка:

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

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

120

Пример

Давайте найдём сумму длин всех строк списка, используя функцию-маппер:

import java.util.List; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List<String> list = List.of("abcde", "12345", "abc", "12"); int res = list.stream() .collect(Collectors.reducing(0, String::length, (a, b) -> a + b)); System.out.println(res); } }

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

15

Пример

Давайте найдём максимальное число списка, используя перегрузку без начального значения:

import java.util.List; import java.util.Optional; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List<Integer> list = List.of(1, 2, 3, 4, 5); Optional<Integer> res = list.stream() .collect(Collectors.reducing((a, b) -> a > b ? a : b)); System.out.println(res); } }

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

Optional[5]

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

  • класс Collectors,
    который содержит методы для коллекционирования
  • метод summarizingInt,
    который собирает статистику по числам
  • метод counting,
    который подсчитывает количество элементов
  • метод mapping,
    который преобразует элементы перед сбором
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить