Назад к вопросам
СБЕР
Senior
7
Что такое промежуточные и терминальные операторы в Stream? Приведите примеры.
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В Java Stream API операторы делятся на промежуточные (intermediate) и терминальные (terminal).
Промежуточные операторы возвращают новый Stream и позволяют строить цепочку операций. Они ленивы, то есть не выполняются до вызова терминального оператора.
Примеры промежуточных операторов:
filter(Predicate)— фильтрация элементовmap(Function)— преобразование элементовsorted()— сортировкаdistinct()— удаление дубликатов
Терминальные операторы завершают цепочку и возвращают результат (не Stream). Они запускают выполнение всех промежуточных операций.
Примеры терминальных операторов:
collect(Collector)— собирает элементы в коллекциюforEach(Consumer)— выполняет действие для каждого элементаreduce(BinaryOperator)— свертка элементовcount()— подсчет элементов
Пример:
List<String> names = List.of("Anna", "Bob", "Alice", "Brian");
long count = names.stream()
.filter(name -> name.startsWith("A")) // промежуточный оператор
.count(); // терминальный оператор
System.out.println(count); // Выведет 2