Назад к вопросам
IT One
Junior — Middle
61
Какое ограничение по количеству применений Stream в Java?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В Java Stream можно использовать только один раз. После того, как к потоку применена терминальная операция (например, collect(), forEach(), reduce()), поток считается закрытым и повторное использование того же объекта Stream невозможно — будет выброшено исключение IllegalStateException с сообщением "stream has already been operated upon or closed".
Если нужно выполнить несколько операций с теми же данными, необходимо создавать новый Stream из исходного источника.
Пример:
List<String> list = Arrays.asList("a", "b", "c");
Stream<String> stream = list.stream();
stream.forEach(System.out::println); // терминальная операция
// Повторное использование вызовет ошибку:
// stream.forEach(System.out::println); // IllegalStateException
// Правильно:
list.stream().forEach(System.out::println);
list.stream().count();