Sobes.tech
Back to questions
Junior — Middle
65

Чем отличаются промежуточные операторы от терминальных в потоках данных или последовательностях?

Companies where asked
IT OneIT One
айтеко

Answer from AI

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.