Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник Java

Stream.collect()

Собирает элементы потока в коллекцию, строку или другую структуру.

Доступно с: Java 8

Синтаксис

<R, A> R collect(Collector<? super T, A, R> collector)

Параметры

ПараметрТипОписание
collectorCollector<? super T, A, R>Способ сбора, обычно из класса `Collectors`.

Возвращаемое значение

RРезультат сборщика: список, множество, словарь, строка или число.

Примеры

Разные сборщики:

void main() {
    List<String> words = List.of("java", "stream", "api", "java");
    Set<String> unique = words.stream().collect(Collectors.toCollection(TreeSet::new));
    String joined = words.stream().collect(Collectors.joining(", "));
    Map<Integer, Long> byLength = words.stream()
        .collect(Collectors.groupingBy(String::length, TreeMap::new, Collectors.counting()));
    IO.println(unique);
    IO.println(joined);
    IO.println(byLength);
}

Результат:

[api, java, stream]
java, stream, api, java
{3=1, 4=2, 6=1}

Примечания

Готовые сборщики лежат в java.util.stream.Collectors — этот пакет в компактном файле Java 25 импортирован автоматически. Для простого списка с Java 16 короче toList(). Сборщики можно вкладывать друг в друга: второй аргумент groupingBy() — тоже сборщик.

См. также

  • Stream.toList() — Собирает элементы потока в неизменяемый список.
  • Collectors.toMap() — Сборщик, который строит словарь из элементов потока.
  • Collectors.groupingBy() — Сборщик, который раскладывает элементы по группам с общим ключом.
  • Collectors.joining() — Сборщик, который склеивает строки потока в одну.

В учебнике

  • Коллекторы — Метод collect и класс Collectors — toList, toSet, toMap, joining, counting, summingInt, averagingDouble и ошибка повторяющегося ключа.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.