Sobes.tech
Назад к вопросам
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);