Можно ли многократно применять терминальный метод к одному потоку в Stream API для Java?

Нет, терминальный метод в Stream API Java можно применить только один раз к одному потоку.

Короткий ответ

Что ответить на собеседовании

Нет, терминальный метод в Stream API Java можно применить только один раз к одному потоку. После вызова терминального метода поток считается закрытым, и повторное использование того же потока приведет к IllegalStateException.

Подробный разбор

Ответ с пояснениями

Нет, терминальный метод в Stream API Java можно применить только один раз к одному потоку. После вызова терминального метода поток считается закрытым, и повторное использование того же потока приведет к IllegalStateException.

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

Пример:

List<String> list = Arrays.asList("a", "b", "c");
Stream<String> stream = list.stream();
long count = stream.count(); // терминальный метод
// stream.forEach(System.out::println); // вызовет IllegalStateException

// Правильно:
list.stream().forEach(System.out::println);

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее