zso*_*csi 4 reactive-programming rx-java
我有一个重复元素的列表,说:
Observable<String> source = Observable.just("A", "B", "A", "C", "C", "A");
Run Code Online (Sandbox Code Playgroud)
我想根据它们的值以及它们出现的次数对它们进行分组,因此输出将是以下对:
{"A", 3}, {"B", 1}, {"C", 2}
Run Code Online (Sandbox Code Playgroud)
基本上相当于一个SQL语句 SELECT x, COUNT(1) GROUP BY x;
我到目前为止只打电话给groupBy:
source.groupBy(x -> x, x -> 1)
Run Code Online (Sandbox Code Playgroud)
但是这会将流转换为GroupedObservables,我找不到如何继续使用它们的好例子.我试过了reduce(),但这里并不好,因为groupBy()它想要减少GroupedObservables,而不是每个组内的元素.
这可能与GroupedObservables有关吗?有没有其他方法可以达到预期的效果?
mie*_*sol 11
以下代码:
source.groupBy(val -> val)
.flatMap(
gr -> gr.count()
.map(count -> new Pair<>(gr.getKey(), count)
)
).subscribe(System.out::println);
Run Code Online (Sandbox Code Playgroud)
打印出来:
A=3
B=1
C=2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1634 次 |
| 最近记录: |