Назад к вопросам
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());
Без конечной операции поток не выполняется.