RxJava:从内部嵌套循环返回结果

时间:2018-11-02 13:21:39

标签: java rx-java rx-java2

我正在尝试使用RxJava遍历2个数组并在内部循环中累积结果,并最终返回Single<Map>

以下是我要实现的目标的一个摘要:

private Map<String, Collection<String>> processData(List<Organization> organizations, List<User> users) {
    return Flowable.fromIterable(organizations) //
        .flatMapSingle(organization-> Flowable.fromIterable(users) //
            .filter(organization -> organization.exist(user)) //
            .toMultimap(organization, user))
        .blockingSingle();
}

我不喜欢blockSingle的电话,有没有更好的方法来处理这种情况?

编辑

按照建议,我摆脱了RxJava并使用Java8流,如下所示:

organizations.streams() //
        .map(organization-> users.stream()
            .filter(organization -> organization.exist(user))
            .collect(MultimapCollector.toMultimap(user::role, user::id)));

我无法理解的是最终如何以Multimap<String,String>的形式获得结果,目前它以Stream<Object>的形式返回。

1 个答案:

答案 0 :(得分:0)

为什么首先要为此任务使用 RxJava ?没有异步性,因此只需使用Java 8(https://www.mkyong.com/java8/java-8-filter-a-map-examples/)中的.filter() / .map() / .flatMap()