Назад к вопросам
Junior — Middle
62
Возможно ли применять две финальные операции последовательно в рамках одного Stream в Java?
Компании, где спрашивали
Effective Mobile
Ответ от нейросети
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);