Назад к вопросам
Junior
88
questionbank

Для чего используется метод collect() в стримах Java?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Метод collect() в Java Stream API используется для сбора элементов стрима в какой-либо контейнер, такой как List, Set, Map, или для проведения обобщающей операции над элементами.

Он принимает один или несколько параметров: ассертер (supplier), аккумулятор (accumulator), комбинатор (combiner), или же готовый Collector. По сути, collect() сворачивает стрим в один результат.

Примеры использования с предопределенными коллекторами из класса Collectors:

  • Сбор в список:

    // Сбор всех элементов стрима в ArrayList
    list.stream()
        .collect(Collectors.toList());
    
  • Сбор в множество:

    // Сбор уникальных элементов стрима в HashSet
    list.stream()
        .collect(Collectors.toSet());
    
  • Сбор в карту:

    // Сбор элементов в карту, где ключ - id, значение - объект
    list.stream()
        .collect(Collectors.toMap(/* keyMapper */ obj -> obj.getId(), /* valueMapper */ obj -> obj));
    
  • Группировка:

    // Группировка по полю type, возвращает Map<Type, List<Object>>
    list.stream()
        .collect(Collectors.groupingBy(/* classifier */ obj -> obj.getType()));
    
  • Объединение строк:

    // Объединение строк с разделителем
    list.stream().map(String::valueOf)
        .collect(Collectors.joining(", "));
    

Также можно создать собственный Collector для выполнения более специфических задач сбора.