RxJava。将列表的热可观察项转换为单个项流,对其进行处理并转换回列表

RxJava。将列表的热可观察项转换为单个项流,对其进行处理并转换回列表,java,rx-java,observable,Java,Rx Java,Observable,假设我对一些项目的列表有一个hot可观察 Observable<List<Item>> observable = ...; 从第一眼看,它似乎还可以,但事实并非如此,因为我们的observable是热的,所以toList()永远不会执行(因为它等待源observable完成)并且整个流都会阻塞 我如何解决这个问题?另外,请注意,过滤器附近可以对单个项目执行任意数量的附加操作 您可以对单个项目执行所有操作,并对在flatMap中创建的可观察对象执行最终的toList操作符

假设我对一些项目的列表有一个hot可观察

Observable<List<Item>> observable = ...;
从第一眼看,它似乎还可以,但事实并非如此,因为我们的observable是热的,所以toList()永远不会执行(因为它等待源observable完成)并且整个流都会阻塞


我如何解决这个问题?另外,请注意,
过滤器
附近可以对单个项目执行任意数量的附加操作

您可以对单个项目执行所有操作,并对在
flatMap
中创建的可观察对象执行最终的
toList
操作符。。这样,您将收到onComplete呼叫,
toList
将收集并转换项目

observable.flatMap(list -> {
     return Observable.from(list)
                        .filter(Item::isFiltered)
                        .toList()
  })
  .subscribe(this::onNext, this::onError)
observable.flatMap(list -> {
     return Observable.from(list)
                        .filter(Item::isFiltered)
                        .toList()
  })
  .subscribe(this::onNext, this::onError)