Что выведет код Senior Лямбды и Stream API обновлено

Что выведет: sorted собирает всё

Вопрос

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

import java.util.stream.*;

public class Main {
    public static void main(String[] args) {
        Stream.of(3, 1, 2)
            .peek(x -> System.out.println("a" + x))
            .sorted()
            .peek(x -> System.out.println("b" + x))
            .limit(1)
            .forEach(x -> System.out.println("c" + x));
    }
}

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

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

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

Коротко

Код выведет: a3, a1, a2, b1, c1. sorted операция с состоянием: прежде чем отдать первый элемент дальше, ей нужно увидеть все, поэтому сначала три строки a.

Что выведет

a3
a1
a2
b1
c1

Разбор

sorted операция с состоянием: прежде чем отдать первый элемент дальше, ей нужно увидеть все, поэтому сначала три строки a. Потом отсортированные элементы идут дальше по одному, limit(1) пропускает только первый и прекращает обработку: b1, c1.

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

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