Sobes.tech
Назад к вопросам
Junior — Middle
66

Какое поведение проявляется в Stream API, если отсутствует вызов конечной операции?

Компании, где спрашивали
ITFB Group

Ответ от нейросети

sobes.tech AI

В Java Stream API операции делятся на промежуточные и конечные. Промежуточные операции (например, filter, map) ленивы и не выполняются до тех пор, пока не вызвана конечная операция (например, collect, forEach).

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

Пример:

Stream.of(1, 2, 3, 4)
    .filter(n -> n % 2 == 0)
    .map(n -> n * 2);
// Ни один элемент не обработается, так как нет конечной операции

Чтобы запустить обработку, нужно вызвать конечную операцию:

List<Integer> result = Stream.of(1, 2, 3, 4)
    .filter(n -> n % 2 == 0)
    .map(n -> n * 2)
    .collect(Collectors.toList());

Без конечной операции поток не выполняется.