Ответ
Метод collect() — это терминальная операция в Stream API, предназначенная для преобразования потока элементов в конкретный результат (контейнер, строку, агрегат). Он принимает объект Collector, который инкапсулирует стратегию накопления и финализации.
Основные цели:
- Сбор в коллекцию:
toList(),toSet(),toMap(). - Агрегация данных:
summingInt(),averagingDouble(),maxBy(). - Группировка и разделение:
groupingBy(),partitioningBy(). - Конкатенация строк:
joining().
Пример:
List<String> names = List.of("Alice", "Bob", "Charlie");
// Сбор отфильтрованных элементов в новый List
List<String> longNames = names.stream()
.filter(name -> name.length() > 3)
.collect(Collectors.toList()); // Результат: ["Alice", "Charlie"]
Почему именно collect()? Он предоставляет гибкий, декларативный способ преобразования потока, используя оптимизированные, готовые коллекторы из класса Collectors или позволяя создавать кастомные.