我正在尝试使用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>
的形式返回。
答案 0 :(得分:0)
为什么首先要为此任务使用 RxJava ?没有异步性,因此只需使用Java 8(https://www.mkyong.com/java8/java-8-filter-a-map-examples/)中的.filter()
/ .map()
/ .flatMap()
。