В чем разница между map и flatMap

«В чем разница между map и flatMap» — вопрос из категории Kotlin, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

map преобразует каждый элемент потока в другой элемент, сохраняя структуру потока (1:1).
flatMap преобразует каждый элемент в новый поток, затем объединяет все потоки в один (1:N).

Пример с List<String>:

val list = listOf("Hello", "World")

// map: List<String> → List<List<Char>>
list.map { it.toList() } // [[H, e, l, l, o], [W, o, r, l, d]]

// flatMap: List<String> → List<Char>
list.flatMap { it.toList() } // [H, e, l, l, o, W, o, r, l, d]

Используй flatMap, когда нужно "развернуть" вложенные коллекции или асинхронные операции (например, Flow/RxJava).