RxJava map vs Kotlin map
Раньше когда был Java 6 и Rx, при использовании RX подхода, делал mapping так
Single.just(listOf("1", "2", "3", "4"))
.toObservable()
.flatMapIterable { it }
.map { it + "0" }
.toList()
.subscribe({
//log list of 10, 20, 30, 40
Log.d("TestCase", "${it}")
}, Throwable::printStackTrace)
В Kotlin все чаще делаю так
Single.just(listOf("1", "2", "3", "4"))
.map {
it.map {
it + "0"
}
}
.subscribe({
//log list of 10, 20, 30, 40
Log.d("TestCase", "${it}")
}, Throwable::printStackTrace)
Второй вариант думаю, что выигрывает по скорости и по памяти.
Это криминал?) p.s. больше похоже на хуливарный вопрос)) но все же, как вы предпочитаете делать?
Ответы (1 шт):
Ну когда вы создаете flatMapIterable то вы по сути создаете новый Observable потом вы ждете его завершения оператором toList. Все это занимает время. В случае же с Kotlin map просто функция которая под капотом имеет обычный цикл.
Поэтому если все что вам нужно это из списка объектов получить список полей объектов то конечно вариант с Kotlin map лучше. flatMap же нужно использовать тогда когда вы хотите создать совершенно новый Observable в цепочке.