Что выведет код Middle Лямбды и Stream API спрашивают часто обновлено

Что выведет: ленивость и короткое замыкание

Вопрос

Что выведет программа (Java 21)? Каждый вывод println с новой строки.

import java.util.stream.*;

public class Main {
    public static void main(String[] args) {
        Stream<Integer> s = Stream.of(5, 8, 12, 3)
            .peek(x -> System.out.println("peek " + x))
            .filter(x -> x > 6);
        System.out.println("start");
        System.out.println(s.findFirst().get());
    }
}

Попробуйте сами

Напишите, что выведет код: каждый вывод с новой строки.

Показать ответ и разбор

Коротко

Код выведет: start, peek 5, peek 8, 8. Пока нет терминальной операции, ничего не выполняется, поэтому первым печатается start. findFirst тянет элементы по одному: 5 не проходит фильтр, 8 проходит, и обработка останавливается.

Что выведет

start
peek 5
peek 8
8

Разбор

Пока нет терминальной операции, ничего не выполняется, поэтому первым печатается start. findFirst тянет элементы по одному: 5 не проходит фильтр, 8 проходит, и обработка останавливается. До 12 и 3 дело не доходит.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.