Встречается на собеседованиях • сегодня

Какая связь между flatMap в Optional и flatMap в Stream API

Оба flatMap служат для "распаковки" вложенных структур, но работают в разных контекстах:

  1. Optional.flatMap
    Преобразует Optional<T> в Optional<U>, избегая вложенности Optional<Optional<U>>. Если исходный Optional пуст, возвращает Optional.empty().
java
Optional<String> opt = Optional.of("hello");
Optional<Integer> result = opt.flatMap(s -> Optional.of(s.length()));
  1. Stream.flatMap
    Преобразует каждый элемент стрима в новый стрим, затем объединяет все стримы в один. Полезно для работы с коллекциями коллекций.
java
List<List<Integer>> nested = Arrays.asList(
    Arrays.asList(1, 2), 
    Arrays.asList(3, 4)
);
List<Integer> flat = nested.stream()
    .flatMap(List::stream)
    .toList();

Общая идея: оба метода устраняют вложенность, но Optional.flatMap работает с единичными значениями, а Stream.flatMap - с последовательностями.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы