RxJava - 将列表和请求转换为地图

Rob*_*toq 2 java android rx-java rx-java2

我有一个“父”对象列表,我想为每个对象获取一个“子”列表。我想要一个父子列表的地图。所以结果是

Map<Parent, List<Child>> result = new HashMap<>();
Run Code Online (Sandbox Code Playgroud)

我的示例父列表:

List<Parent> parents = new ArrayList<>();
parents.add(new Parent(1, "Parent1"));
parents.add(new Parent(2, "Parent2"));
parents.add(new Parent(3, "Parent3"));
parents.add(new Parent(4, "Parent4"));
parents.add(new Parent(5, "Parent5"));
Run Code Online (Sandbox Code Playgroud)

我想迭代它们,一一问孩子

 @GET("api/childs/{parentId}")
 Observable<Response<List<Child>>> getChilds(@Path("parentId") int parentId);
Run Code Online (Sandbox Code Playgroud)

什么是最好的 RX 结构?

谢谢你,罗伯特

Dea*_* Xu 5

Observable.from(parents)
    .concatMap(p -> getChilds(p.getId())
        .map(Response::getValue)
        .map(children -> Pair.of(p, children)))
    .toMap(Pair::getLeft, Pair::getRight)
Run Code Online (Sandbox Code Playgroud)

Pair两个值left和的简单包装器在哪里right