小编Pra*_*pta的帖子

如何使用RxJava和Kotlin进行groupBy和收集?

我有,Observable<Rates>而Rate只是一个简单的对象:

Rate(val value:String){}
Rates(val rates: List<Rate>)
Run Code Online (Sandbox Code Playgroud)

我想改变Observable<Rates>Observable<HashMap<String,Long>.

所以例如对于Rates(arrayOf(Rate("1"),Rate("2"), Rate("3"),Rate("3"), Rate("2"),Rate("2")))我期望结果的费率:

(1 -> 1)
(2 -> 3)
(3 -> 2)
(4 -> 0)
(5 -> 0)
Run Code Online (Sandbox Code Playgroud)

我开始创建类似的东西:

service.getRates()
        .flatMap {it-> Observable.from(it.rates) }
        .filter { !it.value.isNullOrEmpty() }
        .groupBy {it -> it.value}
        .collect({ HashMap<String,Long>()}, { b, t -> b.put(t.key, t.count???)}
Run Code Online (Sandbox Code Playgroud)

但我被困在这里,我不知道所有的价值?如果没有5中的4,我不知道如何添加空值(0).有没有办法用rx做到这一点?

reactive-programming kotlin rx-java rx-kotlin

7
推荐指数
2
解决办法
4876
查看次数

标签 统计

kotlin ×1

reactive-programming ×1

rx-java ×1

rx-kotlin ×1