我有两个Observables(O1 & O2
)发出不同类型的项目。如果A.Id
中包含O1
,我想忽略A*.sameId
中的O2
。到目前为止我提出的最佳解决方案是将O1
中的所有ID加载到Set中(等待onComplete() or blocking
)。然后我加载O2
中的元素,并将O2 Set
与filter()
逐一进行比较。
与运营商一起表达这种最好(最优雅)的方式是什么?
答案 0 :(得分:1)
是的,您需要O1的完整集来检查O2的值:
o1.collect(HashSet::new, (a, b) -> a.add(b))
.flatMap(set -> o2.filter(v -> !set.contains(v)))
...