Выбор ответа Junior Лямбды и Stream API спрашивают часто обновлено

map и flatMap

Вопрос

Что вернёт List.of("a b", "c").stream().flatMap(s -> Arrays.stream(s.split(" "))).toList()?

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

Выберите вариант, и откроется разбор.

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

Коротко

Правильный ответ: [a, b, c]. flatMap превращает каждый элемент в стрим и склеивает все стримы в один: a, b, c.

Варианты ответа

  1. [[a, b], [c]]
  2. [a b, c]
  3. [a, b, c]правильный ответ
  4. Ошибку компиляции: flatMap принимает только List

Разбор

flatMap превращает каждый элемент в стрим и склеивает все стримы в один: a, b, c. Вложенная структура получилась бы с map(s -> s.split(" ")), но это был бы стрим массивов. Без разбиения исходные строки остались бы как есть. flatMap принимает функцию, возвращающую любой Stream.

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

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