Что выведет код 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 ошибок.