Sobes.tech
Back to questions
Junior — Middle
51

В чем заключается принцип ленивой оценки в потоках данных Stream?

Answer from AI

sobes.tech AI

Принцип ленивой оценки (lazy evaluation) в потоках данных Stream в Java означает, что промежуточные операции (например, filter, map) не выполняются сразу при их вызове. Вместо этого они накапливаются и реально обрабатываются только тогда, когда вызывается терминальная операция (например, collect, forEach). Это позволяет оптимизировать выполнение, избегая лишних вычислений и проходов по данным.

Пример:

List<String> list = Arrays.asList("a", "b", "c");
Stream<String> stream = list.stream()
    .filter(s -> {
        System.out.println("filter: " + s);
        return s.startsWith("a");
    });
// Здесь фильтр не выполняется

stream.forEach(System.out::println); // Терминальная операция запускает обработку

В этом примере вывод "filter: ..." появится только при вызове forEach, а не при создании потока.