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

Метод toCollection

Метод toCollection класса Collectors собирает элементы потока в коллекцию, создаваемую переданным поставщиком. В параметр мы передаем Supplier - функцию, которая при вызове возвращает новый пустой экземпляр нужной коллекции. Метод возвращает коллектор, который можно передать в терминальную операцию collect.

Чаще всего в качестве поставщика используют ссылки на конструкторы: ArrayList::new, LinkedList::new, TreeSet::new, ArrayDeque::new и другие. Это позволяет точно управлять типом итоговой коллекции, в отличие от готовых коллекторов toList и toSet.

Синтаксис

Collectors.toCollection(Supplier<C> collectionFactory)

Пример

Давайте соберем элементы потока в ArrayList:

import java.util.ArrayList; 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.toCollection(ArrayList::new)); System.out.println(res); } }

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

[a, b, c, d, e]

Пример

Давайте соберем элементы потока в TreeSet, чтобы получить отсортированное множество:

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

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

[1, 2, 3, 4, 5]

Пример

Давайте соберем элементы потока в LinkedList, сохранив порядок следования:

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

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

[a, b, c, d, e]

Пример

Давайте соберем только четные числа потока в ArrayDeque:

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

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

[2, 4]

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

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