【发布时间】:2016-09-15 01:03:35
【问题描述】:
我有一个重复元素的列表,比如说:
Observable<String> source = Observable.just("A", "B", "A", "C", "C", "A");
我想按它们的值以及它们出现的次数对它们进行分组,因此输出将是成对的:
{"A", 3}, {"B", 1}, {"C", 2}
基本上相当于SELECT x, COUNT(1) GROUP BY x;这样的SQL语句
我只能在他们身上调用 groupBy:
source.groupBy(x -> x, x -> 1)
但这会将流转换为 GroupedObservables,我找不到如何继续使用它们的好例子。我试过reduce(),但这里不好,因为在groupBy()之后它想减少GroupedObservables,而不是每个组内的元素。
GroupedObservables 可以做到这一点吗?有没有其他方法可以达到预期的效果?
【问题讨论】:
-
您是否明白,如果您有一个 hot observable 或一个没有
OnComplete信号的您无法进行此计算? -
不,我没有想到,但似乎可以理解,谢谢。实际上,我将列表作为一个整体发出,而不是逐个元素发出(我只是简化了问题的代码),所以我想这不是问题,对吧?
-
是的,但是如果它是一个冷的 observable,它会发出它的所有值,你可能不需要 Rx。你这样做是为了什么?
标签: rx-java reactive-programming