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

Метод teeing

Метод teeing класса Collectors позволяет применить два независимых коллектора к одному потоку и объединить их результаты с помощью функции-слияния. В первый параметр мы передаем первый коллектор, во второй параметр - второй коллектор, а в третий - функцию BiFunction, которая принимает результаты обоих коллекторов и возвращает итоговое значение. Метод особенно полезен, когда нужно вычислить две характеристики потока за один проход.

Синтаксис

Collectors.teeing(downstream1, downstream2, merger)

Пример

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

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); String res = list.stream() .collect(Collectors.teeing( Collectors.counting(), Collectors.summingInt(Integer::intValue), (count, sum) -> "count=" + count + ", sum=" + sum )); System.out.println(res); } }

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

"count=5, sum=15"

Пример

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

import java.util.List; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List<Integer> list = List.of(3, 1, 4, 2, 5); String res = list.stream() .collect(Collectors.teeing( Collectors.minBy(Integer::compareTo), Collectors.maxBy(Integer::compareTo), (min, max) -> "min=" + min.get() + ", max=" + max.get() )); System.out.println(res); } }

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

"min=1, max=5"

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

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