Junior — Middle
66
Возможно ли применять две финальные операции последовательно в рамках одного Stream в Java?
Companies where asked
Effective Mobile
Answer from AI
sobes.tech AI
В Java Stream API финальная операция (terminal operation) завершает цепочку обработки и запускает вычисления. После вызова финальной операции поток считается «потреблённым» и не может быть использован повторно.
Поэтому применять две финальные операции последовательно к одному и тому же Stream нельзя — это вызовет IllegalStateException.
Если нужно выполнить несколько финальных операций, необходимо создать новый Stream или сохранить промежуточные данные в коллекцию.
Пример неправильного использования:
Stream<String> stream = Stream.of("a", "b", "c");
long count = stream.count();
stream.forEach(System.out::println); // Ошибка: поток уже закрыт
Правильный подход:
List<String> list = Arrays.asList("a", "b", "c");
long count = list.stream().count();
list.stream().forEach(System.out::println);