收集数组列表中的所有可观察字符串

时间:2017-12-20 12:35:01

标签: java rx-java rx-java2

我有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 个答案:

答案 0 :(得分: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();
}

当您订阅生成的observable时,将映射和存储条目,并将结果元素作为列表发出。