微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

RxKotlin COUNT 和 GROUP BY 并返回一个列表

如何解决RxKotlin COUNT 和 GROUP BY 并返回一个列表

我在 Kotlin 中有一个重复元素列表,比如:

val result = arraylistof<String>("AA","BB","CC","AA","BB")

我想按它们的值以及它们出现的次数对它们进行分组,因此输出将是成对的:

{"AA",2},{"BB",{"CC",1}

我已经解决了在 Kotlin 中使用的问题,如下所示:

val ans = result.map { it.value }
            .groupBy { it }
            .map { Pair(it.key,it.value.size) }
            .sortedByDescending { it.second }

我想在 RxKotlin 中编写相同的代码进行学习并尝试了以下但不知道如何应用 map/flatMap 来实现结果。

val source = Observable.fromIterable(result)
source.groupBy{ it }.subscribe { showresult(it) }

解决方法

尝试这样的事情:

source.groupBy { it }
.flatMapSingle { g -> g.count().map { Pair(g.getKey(),it) } }
.toSortedList { a,b -> b.second.compareTo(a.second) }
.subscribe { list -> println(list) }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。