Junior — Middle
86
Java-да бір Stream ішінде екі соңғы операцияны кезек-кезек қолдануға бола ма?
Сұралған компаниялар
Effective Mobile
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);