Rx java 如何在RxJava中重写该代码

Rx java 如何在RxJava中重写该代码,rx-java,Rx Java,我有下面的代码,我知道如何用RxJava方法重写它method、stringsRepo.getStrings和objectsRepo.getObjects应返回可观察的对象 private ObjectsCollection method(){ HashMap<String, List<Object>> map = new HashMap<>(); List<String> strings = stringsRepo.getStr

我有下面的代码,我知道如何用RxJava方法重写它
method
stringsRepo.getStrings
objectsRepo.getObjects
应返回可观察的对象

private ObjectsCollection method(){
    HashMap<String, List<Object>> map = new HashMap<>();

    List<String> strings = stringsRepo.getStrings();
    for (String string : strings) {
        map.put(string, objectsRepo.getObjects(string));
    }
    return new ObjectCollection(map);
}
private objects收集方法(){
HashMap=newHashMap();
List strings=stringsRepo.getStrings();
for(字符串:字符串){
put(string,objectsRepo.getObjects(string));
}
返回新的ObjectCollection(map);
}
我将其改写如下:

  public Observable<HashMap<String, List<Object>>> getObjects() {
    return getStrings().flatMap(Observable::from)
            .collect(HashMap::new, (Action2<HashMap<String, List<Object>>, String>) (map, s) ->
                    getObjects(s).subscribe(objectList -> map.put(s, objectList)));
}

private Observable<List<String>> getStrings(){
    return Observable.just(new ArrayList<>());
}
private Observable<List<Object>> getObjects(String string){
    return Observable.just(new ArrayList<>());
}
公共可观察的getObjects(){
return getStrings().flatMap(Observable::from)
.collect(HashMap::new,(Action2)(map,s)->
订阅(objectList->map.put(objectList));
}
私有可观察getStrings(){
返回Observable.just(newarraylist());
}
私有可观察的getObjects(字符串){
返回Observable.just(newarraylist());
}

有更正确的方法吗?

我会使用
collect
操作符:

Observable
.fromIterable(stringsRepo.getStrings())
.collect(() -> new HashMap<String,List<String>>(), 
         (map, string) -> map.put(string, objectsRepo.getObjects(string)))
.blockingSubscribe()
.first();
可观察
.fromIterable(stringsRepo.getStrings())
.collect(()->new HashMap(),
(map,string)->map.put(string,objectsRepo.getObjects(string)))
.阻止订阅()
.first();

然而,RxJava的使用并不好——它也可以用Java 8 streams API编写。

我会使用
collect
操作符:

Observable
.fromIterable(stringsRepo.getStrings())
.collect(() -> new HashMap<String,List<String>>(), 
         (map, string) -> map.put(string, objectsRepo.getObjects(string)))
.blockingSubscribe()
.first();
可观察
.fromIterable(stringsRepo.getStrings())
.collect(()->new HashMap(),
(map,string)->map.put(string,objectsRepo.getObjects(string)))
.阻止订阅()
.first();

然而,RxJava的使用并不好——它也可以用Java 8 streams API编写。

为什么要将其作为Rx?你想解决的实际问题是什么?还有-到目前为止你尝试了什么?我刚开始学习Rx,想用Rx重写这个基本示例,但我无法理解如何将字符串和相关对象的结果与HashMapi的一个可观察对象结合在一起。在这种情况下,它肯定会有助于展示您迄今为止所拥有的内容,以便我们可以在此基础上进一步了解您的理解水平。我用我的解决方案更新了什么是
getStrings
返回?为什么要将此作为Rx?你想解决的实际问题是什么?还有-到目前为止你尝试了什么?我刚开始学习Rx,想用Rx重写这个基本示例,但我不知道如何将字符串和相关对象的结果与hashmapIn的一个可观察对象结合在一起。在这种情况下,它肯定会有助于展示您迄今为止所拥有的,以便我们可以在此基础上进一步了解您的理解水平。我用我的解决方案更新了什么是
getStrings
返回?我是为Android编写的,但是它不支持Java 8,你可以用匿名类替换lambda。我是为Android编写的,但它不支持Java 8,你可以用匿名类替换lambda。