Sobes.tech
Назад к вопросам
Junior — Middle
54

Чем отличаются интерфейсы Stream и Collection в Java, и в каких сценариях их применение оправдано?

Компании, где спрашивали
DCloud

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

sobes.tech AI

Интерфейс Collection в Java представляет собой структуру данных — контейнер, который хранит элементы. Он определяет методы для добавления, удаления, поиска элементов и т.д. Примеры реализаций: ArrayList, HashSet, LinkedList. Collection — это именно хранилище данных.

Интерфейс Stream — это абстракция для последовательной обработки данных, которая позволяет выполнять операции фильтрации, преобразования, агрегации и т.д. Потоки не хранят данные, а работают с ними «на лету», поддерживают ленивые вычисления и могут быть последовательными или параллельными.

Когда использовать:

  • Если нужно просто хранить и управлять набором элементов — используйте Collection.
  • Если нужно выполнить цепочку операций над данными (фильтрация, сортировка, маппинг) — используйте Stream.

Пример:

List<String> names = Arrays.asList("Anna", "Bob", "Charlie");
// Collection хранит данные

// Stream для обработки данных
List<String> filtered = names.stream()
    .filter(name -> name.startsWith("A"))
    .collect(Collectors.toList());