2016-05-17 34 views
0

我有兩個可觀察對象(O1 & O2),它們可以發出不同類型的項目。如果A.Id包含在O1中,我想忽略A*.sameIdO2。目前爲止我所提出的最佳解決方案是將O1中的所有ID加載到Set中(等待onComplete() or blocking)。然後,我加載O2中的元素,並將它們逐個與O2 Setfilter()進行比較。RxJava通過兩個可觀察對象的ID比較不同項目

什麼是最好(最優雅)的方式來表達這只是與運營商?

回答

1

是的,你需要從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) –

相關問題