有没有办法在rx-java / kotlin中对groupBy键进行排序?

时间:2017-09-16 07:29:02

标签: android kotlin rx-java reactive-programming

以下是一个例子:

Observable.fromIterable(listOf("4444", "22", "333", "1", "55555"))
    .groupBy { it.hashCode() }
    .subscribe { group ->
        group.toList().subscribe { list -> println("${group.key} $list") }
    }

输出:

1600 [22]
49 [1]
50643 [333]
50578165 [55555]
1600768 [4444]

如何按升序/降序排序键或使用自定义排序比较器?

1 个答案:

答案 0 :(得分:1)

其中一个解决方案是使用sorted函数和自定义Comparator

Observable.fromIterable(listOf("4444", "22", "333", "1", "55555"))
        .groupBy { it.hashCode() }
        .sorted { o1, o2 ->
            o1.key?.minus(o2.key ?: 0) ?: 0
        }
        .subscribe { group ->
            group.toList().subscribe { list -> println("${group.key} $list") }
        }

输出:

49 [1]
1600 [22]
50643 [333]
1600768 [4444]
50578165 [55555]