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 шт):

Автор решения: Sergei Buvaka

Ну когда вы создаете flatMapIterable то вы по сути создаете новый Observable потом вы ждете его завершения оператором toList. Все это занимает время. В случае же с Kotlin map просто функция которая под капотом имеет обычный цикл.

Поэтому если все что вам нужно это из списка объектов получить список полей объектов то конечно вариант с Kotlin map лучше. flatMap же нужно использовать тогда когда вы хотите создать совершенно новый Observable в цепочке.

→ Ссылка