Rx java 收集分组观察值';将排放纳入一个清单
我有以下用例(这当然是一个人为的例子,但一旦我知道答案,我将能够将其移植到我要解决的实际问题):Rx java 收集分组观察值';将排放纳入一个清单,rx-java,Rx Java,我有以下用例(这当然是一个人为的例子,但一旦我知道答案,我将能够将其移植到我要解决的实际问题): 获取整数列表 根据%4操作的结果对它们进行分组 将每个组的元素收集到列表中 忽略元素少于3个的任何组/列表 发出一个列表,其元素为步骤3中创建的列表 这是我目前的代码: 可观察 .from(数组.asList(0,1,2,3,4,5,6,7,8,10,11,12)) .groupBy(项目->项目%4) .订阅(groupedObservable->{ 群可观测 托利斯先生() .filter(li
可观察
.from(数组.asList(0,1,2,3,4,5,6,7,8,10,11,12))
.groupBy(项目->项目%4)
.订阅(groupedObservable->{
群可观测
托利斯先生()
.filter(list->list.size()>2)
.订阅(结果->{
System.out.printf(“%d个结果%s%n”,result.size(),result);
});
});
其输出为:
4 results [0, 4, 8, 12]
3 results [2, 6, 10]
3 results [3, 7, 11]
所以它打印出每个组有多少个元素,然后是元素列表。我希望输出是(我实际上不关心键):
3个结果:[[0,4,8,12],[2,6,10],[3,7,11]]
i、 e.以某种方式将分组的可观测值平铺成一个列表。我没有这样做。例如,在
过滤器
之后添加.flatMap(integers->Observable.just(integers))
不会改变任何东西,因为它只会影响每个分组的可观察对象,而不是整个流。有什么方法可以满足我的要求吗?我不确定我是否正确理解了您,但根据所需的输出,这里是您可能需要的代码:
publicstaticvoidmain(最终字符串[]args)引发异常{
从(数组.asList(0,1,2,3,4,5,6,7,8,10,11,12))
.groupBy(项目->项目%4)
.flatMap(可观察::toList)
.filter(整数->整数.size()>2)
托利斯先生()
.订阅(结果->{
System.out.printf(“%d个结果%s%n”,result.size(),result);
});
}
我不确定我是否正确理解了您的意思,但这里有一个要点,可以产生您想要的输出-这正是我想要得到的。当你用代码写一个答案以便我能接受时,我会尽力理解它;我把平面图放错地方了。非常感谢。你在这方面很在行;D