Печать отсортированных строк с помощью Stream API

Будет выведено только [dog, cat, parrot]. У стрима нет терминальной операции, поэтому sorted, peek и map не выполняются; исходный список не изменяется.

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

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

Будет выведено только [dog, cat, parrot]. У стрима нет терминальной операции, поэтому sorted, peek и map не выполняются; исходный список не изменяется.

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

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

Условие

Необходимо понять, какой вывод появится в консоли после выполнения программы, и при обнаружении ошибок скорректировать код.

List<String> animals = List.of("dog", "cat", "parrot");
    animals.stream()
          .sorted()
          .peek(item -> System.out.println(item))
          .map(String :: length);
System.out.println(animals);

Ответ

Будет выведено только [dog, cat, parrot]. У стрима нет терминальной операции, поэтому sorted, peek и map не выполняются; исходный список не изменяется.

Для печати отсортированных строк достаточно:

animals.stream().sorted().forEachOrdered(System.out::println);
System.out.println(animals);

Вывод:

cat
dog
parrot
[dog, cat, parrot]

Если нужны длины, замените терминальную часть на map(String::length).forEachOrdered(System.out::println): получите 3, 3, 6. peek предназначен прежде всего для наблюдения за обработкой и не должен быть единственным носителем обязательного побочного эффекта.

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

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

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

Подробнее