Найти тему
DEBAGanov

Java 552. Назовите любые 5 методов класса Collectors и их использование?

Класс Collectors является удобным инструментом для сбора элементов потока в различные типы коллекций. Он предоставляет множество статических методов, которые могут использоваться в качестве аргументов метода collect().

Ниже приведены некоторые из наиболее часто используемых методов класса Collectors и их использование:

  • toList() - создает новый список, содержащий элементы потока.
List<String> list = Stream.of("a", "b", "c").collect(Collectors.toList());

  • toSet() - создает новое множество, содержащее элементы потока.
Set<String> set = Stream.of("a", "b", "c").collect(Collectors.toSet());

  • toMap(Function<? super T, ? extends K> keyMapper, Function<? super T, ? extends U> valueMapper) - создает новую карту, где ключами являются результаты применения заданной функции keyMapper, а значениями - результаты применения функции valueMapper.
Map<Integer, String> map = Stream.of("one", "two", "three")
.collect(Collectors.toMap(String::length, Function.identity()));

  • joining() - объединяет все элементы потока в одну строку, разделенную заданным разделителем.
String result = Stream.of("one", "two", "three")
.collect(Collectors.joining(", "));

  • groupingBy(Function<? super T, ? extends K> classifier) - группирует элементы потока по результатам применения функции classifier.
Map<Integer, List<String>> map = Stream.of("one", "two", "three", "four")
.collect(Collectors.groupingBy(String::length));

  • mapping(Function<? super T,? extends R> mapper, Collector<? super R,A,? extends D> downstream) - применяет функцию mapper к каждому элементу потока, а затем применяет заданный коллектор downstream для сбора результатов.
List<Character> list = Stream.of("one", "two", "three")
.collect(Collectors.mapping(s -> s.charAt(0), Collectors.toList()));

  • partitioningBy(Predicate<? super T> predicate) - разделяет элементы потока на две группы, в одной из которых элементы удовлетворяют заданному предикату (true), а в другой - не удовлетворяют (false).
Map<Boolean, List<String>> map = Stream.of("one", "two", "three", "four")
.collect(Collectors.partitioningBy(s -> s.length() > 3));

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

1606 вопрос-ответ по Java: https://github.com/DEBAGanov/interview_questions

Tелеграмм канал: https://t.me/DEBAGanov

Мое резюме: https://github.com/DEBAGanov