Rx java将无限流分成多个组,并分别对每个组进行去抖动

Rx java将无限流分成多个组,并分别对每个组进行去抖动,java,rx-java,reactive-programming,Java,Rx Java,Reactive Programming,我有一个简单的课程: public class Event { String objectId; } 还有一些事件源,它向我的可观察对象发出事件。此源是无限的,可以多次发送具有相同objectId的事件。 因此,我想按objectId对值进行分组,然后对每组进行去噪。 假设我有 E1-E1-E2-E1-E2-E2-E2…E2-E1-E100.. 我想实现: E1 E2 .. E2 E1 E100 .. 因此,具有相同的objectId的事件不会在1s时间内发出多次。您可以使用您的描述“

我有一个简单的课程:

public class Event {
    String objectId;
}
还有一些事件源,它向我的可观察对象发出事件。此源是无限的,可以多次发送具有相同objectId的事件。
因此,我想按
objectId
对值进行分组,然后对每组进行去噪。
假设我有
E1-E1-E2-E1-E2-E2-E2…E2-E1-E100..

我想实现:
E1

<代码>E2
..
E2

E1

E100

..

因此,具有相同的
objectId
的事件不会在1s时间内发出多次。

您可以使用您的描述“因此,我想按objectId对值进行分组,然后对每组进行消噪。”并直接将其转换为运算符:

  • “按objectId对值进行分组”->
    可观察。groupBy
  • “对每组进行去盎司”->
    可观察到的。map
    可观察到的。去盎司
  • 最后将其合并回单个流->
    Observable.merge
  • 变成:

    Observable.merge(
        <source>.groupBy(value -> value.objectId)
                .map(observable -> observable.debounce(1, TimeUnit.SECONDS))
    )
    
    Observable.merge(
    .groupBy(值->值.objectId)
    .map(可观测->可观测.去盎司(1,时间单位.秒))
    )
    
    您可以使用您的描述“因此,我想按objectId对值进行分组,然后对每个组进行去噪。”并直接将其转换为运算符:

  • “按objectId对值进行分组”->
    可观察。groupBy
  • “对每组进行去盎司”->
    可观察到的。map
    可观察到的。去盎司
  • 最后将其合并回单个流->
    Observable.merge
  • 变成:

    Observable.merge(
        <source>.groupBy(value -> value.objectId)
                .map(observable -> observable.debounce(1, TimeUnit.SECONDS))
    )
    
    Observable.merge(
    .groupBy(值->值.objectId)
    .map(可观测->可观测.去盎司(1,时间单位.秒))
    )