RxJava2-如何编写分组项的自定义逻辑?
我读过的所有例子都谈到在缓冲区和窗口中有一个单独的边界条件 我希望有一个自定义的边界条件的基础上的项目发射。 例如: 从列表中读取项目,将其分组,直到总和小于100。 我有一份清单-RxJava2-如何编写分组项的自定义逻辑?,java,android,reactive-programming,rx-java2,Java,Android,Reactive Programming,Rx Java2,我读过的所有例子都谈到在缓冲区和窗口中有一个单独的边界条件 我希望有一个自定义的边界条件的基础上的项目发射。 例如: 从列表中读取项目,将其分组,直到总和小于100。 我有一份清单- [10, 30, 40, 50, 20, 30, 50, 30, 80] 继续分组项目,直到其总和小于100,然后发射。上述清单的输出应为: [10, 30, 40] [50, 20, 30] [50, 30] [80] 任何帮助都将受到高度赞赏正如akarnokd所建议的,您可以使用RxJava2扩展 要对s
[10, 30, 40, 50, 20, 30, 50, 30, 80]
继续分组项目,直到其总和小于100,然后发射。上述清单的输出应为:
[10, 30, 40]
[50, 20, 30]
[50, 30]
[80]
任何帮助都将受到高度赞赏正如akarnokd所建议的,您可以使用RxJava2扩展 要对sum设置条件,可以使用自定义谓词:
请参阅RXJava2扩展关于和2个其他拆分策略。
Flowable.just(10, 30, 40, 50, 20, 30, 50, 30, 80)
.compose(FlowableTransformers.bufferWhile(new Predicate<Integer>() {
private int sum = 0;
@Override
public boolean test(Integer next) {
if (sum + next > 100) {
sum = next;
return false;
} else {
sum += next;
return true;
}
}
}))
.subscribe(System.out::println);
[10, 30, 40]
[50, 20, 30]
[50, 30]
[80]