Выбор ответа Junior Лямбды и Stream API обновлено

Повторное использование стрима

Вопрос

Что будет, если вызвать stream.count() дважды на одном и том же объекте Stream?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Второй вызов бросит IllegalStateException. Стрим одноразовый: после терминальной операции он закрыт, повторный вызов бросает IllegalStateException: stream has already been operated upon or closed.

Варианты ответа

  1. Оба вызова вернут одно и то же число
  2. Второй вызов вернёт 0: элементы уже прочитаны
  3. Второй вызов бросит IllegalStateExceptionправильный ответ
  4. Второй вызов заново пересчитает источник

Разбор

Стрим одноразовый: после терминальной операции он закрыт, повторный вызов бросает IllegalStateException: stream has already been operated upon or closed. Нужен новый стрим от источника или Supplier<Stream<T>>.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.