之前有Java 6和Rx的时候,在使用RX方式的时候,我是这样映射的
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)
我认为第二种选择在速度和内存方面获胜。
这是犯罪吗?)ps更像是一个诽谤性的问题))但是,你更喜欢怎么做?
好吧,当您创建时,
flatMapIterable
您实际上是创建了一个新的,Observable
然后您等待它以toList
. 这一切都需要时间。在Kotlinmap
的情况下,它只是一个在底层有一个正常循环的函数。因此,如果您只需要从对象列表中获取对象字段列表,那么Kotlin
map
选项当然更好。当你想在链flatMap
中创建一个全新的时,你应该使用它。Observable