Sobes.tech
Middle
153
questionbank

Что делает метод collect в Java?

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

sobes.tech AI

Метод collect в Java Stream API выполняет мутабельное сокращение (mutable reduction) элементов потока в один результирующий объект. Он принимает в качестве аргумента Collector и позволяет агрегировать данные различными способами, например, собирать элементы в коллекции, группировать их или применять агрегирующие функции (суммирование, усреднение и т.д.).

Основные компоненты Collector:

  • supplier(): Создает новый, пустой результирующий контейнер.
  • accumulator(): Добавляет текущий элемент потока в результирующий контейнер.
  • combiner(): Объединяет два результирующих контейнера (используется в параллельных потоках).
  • finisher(): Применяет финальное преобразование к результирующему контейнеру (optional).

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

  • toList(), toSet(), toMap(): Сбор элементов в List, Set, Map соответственно.
  • joining(): Объединение строковых элементов.
  • groupingBy(): Группировка элементов по заданному критерию.
  • counting(), summingInt(), averagingDouble(): Подсчет, суммирование, усреднение.

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

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class CollectExample {

    public static void main(String[] args) {
        List<String> names = Arrays.asList("Alice", "Bob", "Charlie");

        List<String> collectedNames = names.stream()
                                          .collect(Collectors.toList()); // Сбор в List

        System.out.println(collectedNames);
    }
}