RxJava通过id从两个observable中比较不同的项目

时间:2016-05-17 20:49:45

标签: rx-java

我有两个Observables(O1 & O2)发出不同类型的项目。如果A.Id中包含O1,我想忽略A*.sameId中的O2。到目前为止我提出的最佳解决方案是将O1中的所有ID加载到Set中(等待onComplete() or blocking)。然后我加载O2中的元素,并将O2 Setfilter()逐一进行比较。

与运营商一起表达这种最好(最优雅)的方式是什么?

1 个答案:

答案 0 :(得分:1)

是的,您需要O1的完整集来检查O2的值:

o1.collect(HashSet::new, (a, b) -> a.add(b))
.flatMap(set -> o2.filter(v -> !set.contains(v)))
...