使用 RxJava 过滤子列表 [英] Filter sublist using RxJava
本文介绍了使用 RxJava 过滤子列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
使用以下对象:
Order {
int orderId;
List<Item> items;
}
Item {
int price;
String description;
boolean free;
}
目标是保留从 Observable<0rder> 开始的非自由项,并仍然返回 Observable<0rder>.
The goal is to keep non-free items starting from an Observable<0rder> and still return an Observable<0rder>.
我现在正在执行以下操作,但我的项目没有被过滤:
I'm doing the following for now, but my items doesn't get filtered :
getMyOrder() // returns Observable<Order> from the network
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.computation())
.flatMap(
order -> Observable.from(order.items)
.filter(item -> !item.isFree())
.map(items -> order)
);
推荐答案
这感觉不像是应该使用 RxJava 来完成的事情(特别是如果你想在过滤步骤之后发出 Order
), 可以是 Order
中的一个实例方法,例如:
This doesn't feel like something that should be done using RxJava (especially if you want to emit Order
after the filtering step), could be an instance method in Order
, for example:
getMyOrder().subscribeOn(Schedulers.io())
.observeOn(Schedulers.computation())
.map(Order::removeFreeItems)
.subscribe();
class Order {
int orderId;
List<Item> items;
public Order removeFreeItems() {
for (Iterator<Item> iterator = items.iterator(); iterator.hasNext(); ) {
if (iterator.next().free) {
iterator.remove();
}
}
return this;
}
}
这篇关于使用 RxJava 过滤子列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文