2017-12-20 7 views
1

私はキーと値のペアを含むmapを持っています。このmapから、結果として返されるデータベースにストリーミングして格納します。Observable<String>配列リスト内のすべての観測可能な文字列を収集

私の問題は、ブロックしないでこの文字列に到達しようとしたときに発生します。

常に空です。ここでは私の実装です:

public Observable<List<String>> uploadKeys(Map<String, String> entries) { 
     final List<String> collection = new ArrayList<>(); 
     entries.entrySet().stream() 
       .forEach(entry -> storeKeysInTheDb(entry.getKey(), entry.getValue()).map(element -> element.isEmpty() ? "" : collection.add(element))); 
     return Observable.just(collection); 
} 

答えて

1

あなたはstoreKeysInTheDb()によって返された観測可能に加入しなければなりません。あなたが購読するまで、何も起こらず、文字列の結果も出ません。

public Observable<List<String>> uploadKeys(Map<String,String> entries) { 
    return Observable.fromIterable(entries.entrySet) 
      .flatMap(entry -> storeKeysInTheDb(entry.getKey(), entry.getValue()) 
      .filter(element -> !element.isEmpty()) 
      .toList(); 
} 

結果の観測対象に登録すると、エントリがマップされて保存され、結果の要素がリストとして放出されます。

関連する問題