2
假設我們有兩個可觀測物Observable<Integer> o1
和Observable<Integer> o2
,並且每個可觀測物正在產生嚴格遞增的序列。兩個有序可觀測物的全外連接
任務是對這兩個觀察對象執行完全外連接的等效操作。例如加入的
Observable.just(0, 2, 3, 6)
Observable.just(1, 2, 3, 4, 5, 6)
應該產生
[ [0, _], [_, 1], [2, 2], [3, 3], [_, 4], [_, 5], [6, 6] ]
的加入應該是高效的和非常大的或無限流工作。
該解決方案在拉方案中很容易。有沒有一種慣用的方法來實現這一點?
謝謝,很好的答案,它的工作原理。 幾個問題/注意到如果有重複的源可觀察時,才需要 1)distinctUntilChanged,但如果整數嚴格遞增該操作是多餘的 2)'flatMapIterable'應該是不尊順序,並且可以執行同時,不是嗎?所以,由於使用skip數組,似乎有一場比賽。它不應該被'concatMapIterable'取代嗎? 再次感謝。 – hgrey
1)是的。我留在那裏以防萬一。 2)否,消費Iterable是同步的,不允許併發合併,並且等價於'concatMapIterable'。事實上,它們是同一個底層運營商的別名。此外,該功能保證順序執行,因此前一次運行的跳過狀態將永遠不會同時修改。 – akarnokd