例如,我从API中获得了一个对象。此对象包含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);
});但这看起来很糟糕,我肯定有办法做得更好,但我不知道怎么做,有什么办法吗?
发布于 2016-05-31 15:33:16
您可以使用flatMapIterable / toList从列表中释放项,然后重新生成列表(请参阅下面)。请注意,只有当toList返回一个已完成的Observable时,apiServiceService.getData()才能工作。否则,它将不会发出列表。
Observable<SomePresentationModel> observable = apiService.getData()
.flatMapIterable(data -> data.getBars())
.map(elt -> elt.getSomething())
.toList()
.map(foo -> asPresentationModel(foo)); https://stackoverflow.com/questions/37549788
复制相似问题