Я пытаюсь использовать RxJava для итерации по двум массивам, накапливать результаты во внутреннем цикле и в конечном итоге вернуть 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
, есть ли лучший способ справиться с этим делом?
EDIT
Как и предполагалось, я избавился от 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>
.