Какой объект возвращает метод stream() у ArrayList в Java?

«Какой объект возвращает метод stream() у ArrayList в Java?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Метод stream() у ArrayList возвращает объект типа Stream<E>, где E — тип элементов коллекции. Это последовательный (не параллельный) поток данных для обработки в функциональном стиле.

Пример:

List<String> list = new ArrayList<>(List.of("a", "b", "c"));
Stream<String> stream = list.stream(); // Stream<String>

Ключевые особенности:

  • Не изменяет исходную коллекцию — операции потока работают с данными, но не модифицируют ArrayList.
  • Одноразовый — после вызова терминальной операции (например, collect, forEach) поток считается потребленным и не может быть использован повторно.
  • Ленивый — промежуточные операции (например, filter, map) выполняются только при запуске терминальной операции.
  • Для параллельной обработки используйте list.parallelStream().