RxJava通过两个可观察对象的ID比较不同项目
问题描述:
我有两个可观察对象(O1 & O2
),它们可以发出不同类型的项目。如果A.Id
包含在O1
中,我想忽略A*.sameId
从O2
。目前为止我所提出的最佳解决方案是将O1
中的所有ID加载到Set中(等待onComplete() or blocking
)。然后,我加载O2
中的元素,并将它们逐个与O2 Set
与filter()
进行比较。RxJava通过两个可观察对象的ID比较不同项目
什么是最好(最优雅)的方式来表达这只是与运营商?
答
是的,你需要从O1全套检查O2值:
o1.collect(HashSet::new, (a, b) -> a.add(b))
.flatMap(set -> o2.filter(v -> !set.contains(v)))
...
收集()似乎是一个完美的结合!谢谢! – Philipp
正确和更简洁的代码:.collect(HashSet :: new,HashSet :: add) –