Назад к вопросам
IT One
Junior — Middle
64
Чем отличаются промежуточные операторы от терминальных в потоках данных или последовательностях?
Компании, где спрашивали
айтеко
Ответ от нейросети
sobes.tech AI
Промежуточные операторы (intermediate) в потоках данных (Streams в Java) — это операции, которые возвращают новый поток и позволяют строить цепочку вызовов. Они ленивы, то есть не выполняются сразу, а только при вызове терминального оператора. Примеры: filter(), map(), sorted().
Терминальные операторы (terminal) — это операции, которые завершают обработку потока, возвращают результат или побочный эффект и запускают выполнение всей цепочки. После терминального оператора поток нельзя использовать. Примеры: collect(), forEach(), reduce(), count().
Пример:
List<String> list = List.of("a", "bb", "ccc");
long count = list.stream()
.filter(s -> s.length() > 1) // промежуточный оператор
.count(); // терминальный оператор
Здесь filter не выполняется сразу, а только когда вызывается count.