Исследование поведения Stream API в Java

Ничего не будет напечатано. Оба map — промежуточные ленивые операции, а терминальной операции в цепочке нет, поэтому обработка элементов не начинается.

Короткий ответ

Что ответить на собеседовании

Ничего не будет напечатано. Оба map — промежуточные ленивые операции, а терминальной операции в цепочке нет, поэтому обработка элементов не начинается.

Подробный разбор

Ответ с пояснениями

Условие

В данном примере показана цепочка вызовов Stream API. Необходимо определить, какой вывод появится в консоли при выполнении метода test().

void test() {
    Stream.of("a", "b", "c")
        .map(letter -> {
            System.out.println(letter.toUpperCase()); 
            return letter.toUpperCase();
        })
        .map(letter -> {
            System.out.println(letter + 1); 
            return letter + 1;
        });
}

Ответ

Ничего не будет напечатано. Оба map — промежуточные ленивые операции, а терминальной операции в цепочке нет, поэтому обработка элементов не начинается.

Создаётся pipeline, но лямбды с println не вызываются. Для запуска нужен terminal operation, например forEach. Не стоит использовать побочные эффекты map как надёжный механизм бизнес-логики: Stream может оптимизировать ненужные этапы для некоторых терминальных операций. Здесь отсутствие вывода следует уже из отсутствия терминального вызова.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее