Sobes.tech
Назад к вопросам
Junior — Middle
66

Можно ли выполнить несколько вызовов терминальной операции подряд в рамках одного потока данных?

Компании, где спрашивали
SimbirsoftSimbirsoft

Ответ от нейросети

sobes.tech AI

В Java Stream API нельзя выполнить несколько терминальных операций подряд на одном и том же потоке данных. Терминальная операция закрывает поток, и после её вызова поток становится недоступен для дальнейших операций.

Если нужно выполнить несколько разных операций, нужно либо создавать новый поток из исходных данных, либо использовать промежуточные операции, которые не закрывают поток.

Пример неправильного использования:

Stream<String> stream = Stream.of("a", "b", "c");
long count = stream.count(); // терминальная операция
stream.forEach(System.out::println); // ошибка: поток уже закрыт

Правильно:

Stream<String> stream1 = Stream.of("a", "b", "c");
long count = stream1.count();

Stream<String> stream2 = Stream.of("a", "b", "c");
stream2.forEach(System.out::println);