Java Core middle
В чём разница: map vs flatMap?
Ответ
map: T → R, один элемент → один. flatMap: T → Stream<R> с уплощением. Пример: List<List<String>> → flatMap(Collection::stream) → плоский Stream<String>. Для Optional: flatMap избегает Optional<Optional<T>>.
Разбор: Правильно: map преобразует элемент один-к-одному (T → R), а flatMap принимает функцию T → Stream<R> и уплощает результат, превращая поток потоков в один плоский поток (и избегая Optional<Optional<T>>). Ловушки меняют map и flatMap ролями или ошибочно объявляют flatMap терминальной операцией — обе промежуточные и ленивые.
Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.