Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
RxJava2-如何编写分组项的自定义逻辑?_Java_Android_Reactive Programming_Rx Java2 - Fatal编程技术网

RxJava2-如何编写分组项的自定义逻辑?

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

我读过的所有例子都谈到在缓冲区和窗口中有一个单独的边界条件 我希望有一个自定义的边界条件的基础上的项目发射。 例如:

从列表中读取项目,将其分组,直到总和小于100。 我有一份清单-

[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]