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对值进行分组,然后对每组进行消噪。”并直接将其转换为运算符:
可观察。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对值进行分组,然后对每个组进行去噪。”并直接将其转换为运算符:
可观察。groupBy
可观察到的。map
和可观察到的。去盎司
Observable.merge
Observable.merge(
<source>.groupBy(value -> value.objectId)
.map(observable -> observable.debounce(1, TimeUnit.SECONDS))
)
Observable.merge(
.groupBy(值->值.objectId)
.map(可观测->可观测.去盎司(1,时间单位.秒))
)