Выбор ответа Junior Лямбды и Stream API обновлено
Повторное использование стрима
Вопрос
Что будет, если вызвать stream.count() дважды на одном и том же объекте Stream?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Второй вызов бросит IllegalStateException. Стрим одноразовый: после терминальной операции он закрыт, повторный вызов бросает IllegalStateException: stream has already been operated upon or closed.
Варианты ответа
- Оба вызова вернут одно и то же число
- Второй вызов вернёт 0: элементы уже прочитаны
- Второй вызов бросит IllegalStateExceptionправильный ответ
- Второй вызов заново пересчитает источник
Разбор
Стрим одноразовый: после терминальной операции он закрыт, повторный вызов бросает IllegalStateException: stream has already been operated upon or closed. Нужен новый стрим от источника или Supplier<Stream<T>>.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.