我有以下用例(这当然是一个人为的例子,但是一旦我知道了答案,我就能将它移植到我要解决的真正问题):
这是我目前的代码:
Observable
.from(Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12))
.groupBy(item -> item % 4)
.subscribe(groupedObservable -> {
groupedObservable
.toList()
.filter(list -> list.size() > 2)
.subscribe(result -> {
System.out.printf("%d results %s%n", result.size(), result);
});
});
Run Code Online (Sandbox Code Playgroud)
它的输出是:
4 results [0, 4, 8, 12]
3 results [2, 6, 10]
3 results [3, 7, 11]
Run Code Online (Sandbox Code Playgroud)
因此,它打印出每个组有多少元素,然后打印元素列表.我希望输出(我实际上不关心键):
3结果:[[0,4,8,12],[2,6,10],[3,7,11]]
即以某种方式将分组的可观察量展平为一个列表.我没有这样做.例如,.flatMap(integers -> Observable.just(integers))在filter不改变任何内容之后添加,因为它只影响每个分组的可观察对象,而不是整个流.有没有办法满足我的要求?
Vla*_*nov 19
我不确定我是否理解正确,但根据所需的输出,这里是您可能正在寻找的代码:
public static void main(final String[] args) throws Exception {
Observable.from(Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12))
.groupBy(item -> item % 4)
.flatMap(Observable::toList)
.filter(integers -> integers.size() > 2)
.toList()
.subscribe(result -> {
System.out.printf("%d results %s%n", result.size(), result);
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9095 次 |
| 最近记录: |