我正在尝试使用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>
。
为什么首先要使用RxJava执行此任务?不涉及异步性,所以只需使用Java 8中的.filter()
/.map()
/.flatMap()
(https://www.mkyong.com/java8/java-8-filter-a-map-examples/)。