我有我从API获得一个Object的情况。该对象包含ArrayList。这个ArrayList包含了我需要的数据作为另一个列表。
我有这个代码,它工作得很好
Observable<SomePresentationModel> observable = apiService.getData()
.map(data -> {
List<Foo> foo = new ArrayList<>();
for (Bar bar : data.getBars()) {
foo.addAll(bar.getSomething());
}
return asPresentationModel(foo);
});
但它看起来很糟糕,我确信有一些方法可以做得更好,但我不知道如何,有什么想法?
答案 0 :(得分:3)
您可以使用flatMapIterable
/ toList
从列表中发出项目,然后重建列表(请参阅下面的内容)。请注意,toList
仅在apiServiceService.getData()
返回完成的Observable
后才有效。否则,它不会发出列表。
Observable<SomePresentationModel> observable = apiService.getData()
.flatMapIterable(data -> data.getBars())
.map(elt -> elt.getSomething())
.toList()
.map(foo -> asPresentationModel(foo));