我有一个简单的类(class):
public class Event {
String objectId;
}
以及一些向我的可观察对象发出事件的事件源。该源是无限的,可以多次发送具有相同 objectId 的事件。
因此,我想按 objectId
对值进行分组,然后对每个组进行反跳。
假设我有
E1-E1-E2-E1-E2-E2-E2...E2-E1-E100..
我想要实现:
E1
E2
..
E2
E1
E100
..
因此,具有相同 objectId
的事件在 1 秒内不会发出多次。
最佳答案
您可以接受您的描述“因此,我想按 objectId 对值进行分组,然后对每个组进行反跳。”并直接将其转换为运算符:
- “按 objectId 对值进行分组” ->
Observable.groupBy
- “对每个组进行去抖” ->
Observable.map
和Observable.debounce
- 最后将其合并回单个流 ->
Observable.merge
变成:
Observable.merge(
<source>.groupBy(value -> value.objectId)
.map(observable -> observable.debounce(1, TimeUnit.SECONDS))
)
关于java - Rx java将无限流分成组并对每个组单独进行去抖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43431501/