gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 07:44:06 24 4
gpt4 key购买 nike

我读过的所有例子都谈到在bufferwindow 中有一个单独的边界条件我想根据发出的项目设置自定义边界条件。例如:

从列表中读取项目,将它们分组直到总和小于 100。我有一个 list -

[10, 30, 40, 50, 20, 30, 50, 30, 80]

继续对项目进行分组,直到它们的总和小于 100,然后发出。以上列表的输出应为:

[10, 30, 40]
[50, 20, 30]
[50, 30]
[80]

任何帮助将不胜感激

最佳答案

根据 akarnokd 的建议,您可以使用 bufferWhile来自 RxJava2 扩展。

要对 sum 设置条件,您可以使用自定义 Predicate:

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]

关于java - RxJava2 - 如何编写分组项目的自定义逻辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48371939/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com