Ответ
map и flatMap — операторы преобразования в RxJava, но работают по-разному:
- map — преобразует каждый элемент потока в другой элемент синхронно.
Пример:
Observable.just(1, 2, 3)
.map { it * 2 } // 2, 4, 6
- flatMap — преобразует каждый элемент в новый
Observable(может быть асинхронным), затем объединяет их в один поток. Порядок элементов не гарантируется.
Пример:
Observable.just(1, 2, 3)
.flatMap { Observable.just(it, it * 10) } // 1, 10, 2, 20, 3, 30
Ключевое отличие:
map — 1 элемент → 1 значение.
flatMap — 1 элемент → Observable (множество значений).
Для сохранения порядка используй concatMap.