Sobes.tech
Junior — Middle
111

Care este diferența dintre operatorii intermediari și cei terminali în fluxurile de date sau secvențe?

Companiile au fost întrebate
IT OneIT One
айтеко

Răspuns de la 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.