使用以下对象:
Order {
int orderId;
List<Item> items;
}
Item {
int price;
String description;
boolean free;
}
目标是从Observable&lt; 0rder&gt;开始保持非免费物品。并仍然返回一个Observable&lt; 0rder&gt;。
我现在正在做以下事情,但我的项目没有被过滤:
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)
);
答案 0 :(得分:0)
这并不像是应该使用RxJava完成的事情(特别是如果你想在过滤步骤之后发出Order
),可能是Order
中的实例方法,例如:
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;
}
}