Sobes.tech
Junior — Middle
62

Какое ограничение по количеству применений Stream в Java?

Companies where asked
IT OneIT One

Answer from AI

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();