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

Класс Collectors

Класс Collectors - это утилитарный класс из пакета java.util.stream, который содержит статические методы для создания коллекторов. Коллектор - это объект, который описывает, как накапливать элементы потока в итоговый результат. Класс Collectors используется вместе с терминальным методом collect интерфейса Stream. Коллекторы позволяют собирать элементы в List, Set, Map, объединять строки, группировать элементы по признаку, разделять на две группы, считать количество, суммировать и выполнять множество других операций.

Синтаксис

Collectors.toList() Collectors.toSet() Collectors.toMap(keyMapper, valueMapper) Collectors.joining(delimiter) Collectors.groupingBy(classifier) Collectors.partitioningBy(predicate) Collectors.counting() Collectors.summarizingInt(mapper) Collectors.reducing(identity, mapper, op) Collectors.mapping(mapper, downstream) Collectors.filtering(predicate, downstream) Collectors.flatMapping(mapper, downstream) Collectors.teeing(downstream1, downstream2, merger)

Пример

Давайте соберем элементы потока в список с помощью коллектора toList:

import java.util.List; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List<String> res = List.of("a", "b", "c", "d", "e") .stream() .collect(Collectors.toList()); System.out.println(res); } }

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

[a, b, c, d, e]

Пример

Давайте соберем элементы потока в множество с помощью коллектора toSet:

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

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

[1, 2, 3, 4, 5]

Пример

Давайте объединим элементы потока в одну строку с разделителем с помощью коллектора joining:

import java.util.stream.Collectors; public class Main { public static void main(String[] args) { String res = List.of("a", "b", "c", "d", "e") .stream() .collect(Collectors.joining("-")); System.out.println(res); } }

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

"a-b-c-d-e"

Пример

Давайте сгруппируем элементы потока по длине строки с помощью коллектора groupingBy:

import java.util.List; import java.util.Map; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { Map<Integer, List<String>> res = List.of("a", "b", "c", "d", "e") .stream() .collect(Collectors.groupingBy(String::length)); System.out.println(res); } }

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

{1=[a, b, c, d, e]}

Пример

Давайте посчитаем количество элементов потока с помощью коллектора counting:

import java.util.stream.Collectors; public class Main { public static void main(String[] args) { Long res = List.of(1, 2, 3, 4, 5) .stream() .collect(Collectors.counting()); System.out.println(res); } }

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

5

Пример

Давайте соберем элементы потока в карту с помощью коллектора toMap, где ключом будет строка, а значением - ее длина:

import java.util.Map; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { Map<String, Integer> res = List.of("a", "b", "c", "d", "e") .stream() .collect(Collectors.toMap(s -> s, String::length)); System.out.println(res); } }

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

{a=1, b=1, c=1, d=1, e=1}

Пример

Давайте разделим элементы потока на две группы по условию с помощью коллектора partitioningBy:

import java.util.List; import java.util.Map; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { Map<Boolean, List<Integer>> res = List.of(1, 2, 3, 4, 5) .stream() .collect(Collectors.partitioningBy(n -> n % 2 == 0)); System.out.println(res); } }

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

{false=[1, 3, 5], true=[2, 4]}

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

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