Gymterview
junior

В чем разница между Collection и Stream?

Collection и Stream решают принципиально разные задачи, хотя часто работают вместе. Коллекция — это структура данных для хранения и доступа к элементам. Стрим — конвейер для декларативной обработки данных.

Критерий Collection Stream
Назначение Хранение и доступ к элементам Конвейер вычислений
Хранение данных Да, все элементы в памяти Нет, элементы обрабатываются по мере необходимости
Доступ к элементам Поэлементный (по индексу, итератор) Только через операции конвейера
Повторное использование Многократное Одноразовое
Модификация Можно добавлять/удалять элементы Не модифицирует источник
Вычисление Жадное (eager) Ленивое (lazy)
Бесконечность Нет Может быть бесконечным

Коллекция воплощает идею структуры данных (например, Set гарантирует уникальность), а стрим воплощает идею конвейера, результатом которого может быть коллекция, примитив, Optional или побочный эффект.

На собеседовании: ключевая мысль — коллекция отвечает на вопрос «что хранить», стрим — на вопрос «как обработать». Упоминание ленивого вычисления и одноразовости стрима покажет глубокое понимание.