Вернуть собранные результаты из внутренних вложенных циклов - PullRequest
0 голосов
/ 02 ноября 2018

Я пытаюсь использовать потоки Java8 для итерации по двум спискам, накапливать результаты во внутреннем цикле и в итоге возвращать Multimap<String,String>.

Вот фрагмент:

private Multimap<String, String> processUsers(List<Organization> organizations, List<User> users) {
    return organizations.stream() //
        .map(organization-> users.stream()
            .filter(user -> organization.exist(user))
            .collect(MultimapCollector.toMultimap(User::role, User::id))
        );
}

Это не строит, потому что возвращает Stream<Object>. Как исправить этот метод для сбора и возврата MultiMap из метода.

1 Ответ

0 голосов
/ 02 ноября 2018

Сначала рассмотрите пользователей, а не организации:

return users.stream()
    .filter(user -> organizations.stream().anyMatch(org -> org.exist(user)))
    .collect(MultimapCollector.toMultimap(User::role, User::id));
...