"?-6ren"> "?-我有一个 Observable那永远不会结束。它发出 List .每次发出该列表时,我都需要过滤掉其中的一些项目。目前我有这个作为解决方案: mData.getItemsObservable() //-6ren">
gpt4 book ai didi

java - RxJava 2 : How to filter items of infinite stream that emits "List"?

转载 作者:太空宇宙 更新时间:2023-11-03 10:35:50 25 4
gpt4 key购买 nike

我有一个 Observable那永远不会结束。它发出 List<Item> .每次发出该列表时,我都需要过滤掉其中的一些项目。目前我有这个作为解决方案:

mData.getItemsObservable() // Observable<List<Item>>
.compose(...)
.flatMapSingle(items -> Observable.fromIterable(items)
.filter(item -> item.someCondition())
.toList())
.subscribe(items -> {
// ...
}, error -> {
// ...
});

这是过滤掉某些项目的最佳方式吗?有没有更简单(更易读)的方法来做同样的事情?

我也试过这个,但它没有发出任何东西:

mData.getItemsObservable() // Observable<List<Item>>
.compose(...)
.flatMap(Observable::fromIterable) // or like this: flatMapIterable(items -> items)
.filter(item -> item.someCondition())
.toList()
.subscribe(items -> {
// ...
}, error -> {
// ...
});

最佳答案

如果您想坚持使用 RxJava,第一种方法就可以了。否则,您可以使用 IxJava并直接在 map 操作中执行过滤:

mData.getItemsObservable() // Observable<List<Item>>
.compose(...)
.map(v -> Ix.from(v).filter(w -> w.someCondition()).toList())
.subscribe(items -> {
// ...
}, error -> {
// ...
});

关于java - RxJava 2 : How to filter items of infinite stream that emits "List<Item>"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45281952/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com