我有一个Flowable(冷)我需要应用以下运算符:
请注意,在发出之后,为A检查的下一个元素应该与刚满足条件B的元素相同,因为元素可能满足两个条件。
我想不出用RxJava做这个的方法。我的第一直觉是takeUntil()和/或skipUntil(),但两者都只应用一次。我还没有足够的反应式编程经验来编写自定义运算符。
感谢任何想法和指示!
答案 0 :(得分:2)
过滤掉A和B,将它们收集到一个列表中,然后检查列表中的后续A& B,应用函数将结果添加到列表中并将该列表返回到flatMapIterable
:
source
.filter(v -> isA(v) || isB(v))
.toList()
.flatMapIterable(list -> {
List<C> result = new ArrayList<C>();
for (int i = 0; i < list.size() - 1; i++) {
T a = list.get(i);
T b = list.get(i + 1);
if (isA(a) && isB(b)) {
result.add(functionAB(a, b));
i++;
}
}
return result;
})