RxJava通过两个可观察对象的ID比较不同项目

RxJava通过两个可观察对象的ID比较不同项目

问题描述:

我有两个可观察对象(O1 & O2),它们可以发出不同类型的项目。如果A.Id包含在O1中,我想忽略A*.sameIdO2。目前为止我所提出的最佳解决方案是将O1中的所有ID加载到Set中(等待onComplete() or blocking)。然后,我加载O2中的元素,并将它们逐个与O2 Setfilter()进行比较。RxJava通过两个可观察对象的ID比较不同项目

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

是的,你需要从O1全套检查O2值:

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

收集()似乎是一个完美的结合!谢谢! – Philipp

+0

正确和更简洁的代码:.collect(HashSet :: new,HashSet :: add) –