Назад к вопросам
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());