如何在 RxJava 中构建可切换的可迭代流?

How to build a togglable iterable stream in RxJava?

我想构建一个可切换的可迭代流 (Observable<List<T>>),如下所示:

  1. 订阅后,发出一个空的可迭代对象(例如 List)
  2. 收到输入后(PublishSubject?),将其添加到可迭代对象并发出。
  3. 当再次收到输入时,将其添加到可迭代对象(如果不存在)或从可迭代对象中移除(如果存在),然后发出它。
  4. 重复步骤 3。

用 RxJava 容易实现吗?

如果我的问题不清楚,请原谅,我是响应式编程的新手。

我想你可以用一个 Subject + scan 运算符来完成:

val subject = PublishSubject.create<Int>()
subject.scan(mutableListOf<Int>()) { list, item ->
    list += item
    list
}