我有一个返回Flowable<RealmResults<MyClass>>
的方法。对于那些不熟悉Realm的人来说,RealmResults
只是一个简单的List
项。
给定Flowable<RealmResults<MyClass>>
,我想发出每个MyClass
项目,以便我可以对每个项目执行map()
操作。
我正在寻找以下内容:
getItems() // returns a Flowable<RealmResults<MyClass>>
.emitOneAtATime() // Example operator
.map(obj -> obj + "")
// etc
什么运算符将按顺序发出每个List项?
答案 0 :(得分:9)
你会flatMap(aList -> Flowable.fromIterable(aList))
。然后,您可以在每个项目上map()
。如果要重新收集项目,则有toList()
(注意:这将是一个新的List实例)。这是一个示例,说明如何使用这些方法使用List<Integer>
获取不同的类型。
List<Integer> integerList = new ArrayList<>();
Flowable<Integer> intergerListFlowable =
Flowable
.just(integerList)//emits the list
.flatMap(list -> Flowable.fromIterable(list))//emits one by one
.map(integer -> integer + 1);
答案 1 :(得分:1)
问题是,您希望将结果保留为Flowable<List<MyClass>>
还是保留订单的Flowable<MyClass>
?
如果是第一个,
getItems()
.concatMap(results -> Flowable
.fromIterable(results)
.map(/* do your mapping */)
.toList()
)
如果第二个,这应该足够了:
getItems()
.concatMap(Flowable::fromIterable)
.map(/* do your mapping */)