Ничего не будет напечатано. Оба map — промежуточные ленивые операции, а терминальной операции в цепочке нет, поэтому обработка элементов не начинается.
Исследование поведения Stream API в Java
Ничего не будет напечатано. Оба 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 может оптимизировать ненужные этапы для некоторых терминальных операций. Здесь отсутствие вывода следует уже из отсутствия терминального вызова.