用observable替换每个double

我有两个列表: List<Foo>List<Bar> 。 对于List<Foo>每个项目,我必须检查List<Bar>所有项目,并且如果匹配,则设置一个值。 今天我使用这个代码:

 fooList.forEach { foo -> barList.forEach { bar -> if(foo.id == bar.id) { bar.name = foo.name } } } return barList 

我想改变它,因为现在我有一个Observable<Foo>和一个Observable<Bar> 。 我怎样才能取代我的代码来使用反应式编程?

你可以把这个Bar放到一个id的Map中来命名并运行foo序列:

 Observable<Bar> bars = ... Observable<Foo> foos = ... bars .toMap(bar -> bar.id, bar -> bar.name) .flatMap(map -> foos.doOnNext(foo -> { String name = map.get(foo.id); if (name != null) { foo.name = name; } }) ) .subscribe(...)