2017-04-15 61 views
0

我有一個簡單的類:的Rx的java分裂無限流分成組和反跳每組單獨

public class Event { 
    String objectId; 
} 

而一些事件源,其發射事件到我觀察到。這個源是無限的,並且可以發送具有相同objectId的事件幾次。
所以,我想按objectId分組值,然後去除每個組。
比方說,如果我有
E1-E1-E2-E1-E2-E2-E2...E2-E1-E100..
我想要實現:
E1
E2
..
E2
E1
E100
..
因此,同objectId別事件」在1秒內發射超過一次。

回答

3

你可以把你的描述「所以,我想按objectId分組值,然後debounce每個組。」 「通過的ObjectID組值」

  1. - >Observable.groupBy
  2. 「防反跳的每個基團」 - >Observable.mapObservable.debounce
  3. 最後把它合併到單個流 - >Observable.merge:與直接將其轉換爲操作員

談到爲:

Observable.merge(
    <source>.groupBy(value -> value.objectId) 
      .map(observable -> observable.debounce(1, TimeUnit.SECONDS)) 
) 
+0

謝謝,WO rked。 –