2017-04-15 26 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。 –