Map<K, Observable<V>>
を実行してMap<K, V>
に変換するより洗練された方法がありますか?オブザーバブルマップの実行
@Test
public void test() {
final ImmutableMap<String, Observable<Integer>> map = ImmutableMap.of(
"1", Observable.just(1),
"2", Observable.just(2),
"3", Observable.just(3)
);
Map<String, Integer> result = new HashMap<>(map.size());
final Integer execRes = map.entrySet()
.stream()
.map(entry -> {
entry.getValue().subscribe(res -> result.put(entry.getKey(), res));
return entry.getValue();
})
.reduce(Observable::concat).get().toBlocking().last();
Assert.assertTrue(execRes == 3);
Assert.assertTrue(1 == result.get("1"));
Assert.assertEquals("{1=1, 2=2, 3=3}", result.toString());
}
P.S.:
私は、次の方法を見つけましたrxjava-1.1.7が使用され、Observableコードを同時に(同時に)実行する必要があります
[ 'toMap'](http://reactivex.io/RxJava/javadoc/io/reactivexでおそらく見て/Observable.html#toMap-io.reactivex.functions.Function-io.reactivex.functions.Function-)、そのオーバーロードが役立つ可能性があります。 – nullpointer