У меня есть задача: учитывая список пользователей, каждый из которых обладает некоторыми привилегиями, группировать пользователей по привилегиям. Я должен использовать потоковый API. Это единственный код, который мне пришёл в голову:
public Map<Privilege, List<User>> groupByPrivileges(List<User> users) {
return users.stream().collect(groupingBy(User::getPrivileges));
}
Как вы можете видеть в возвращаемом типе метода, мне нужно получить карту с единичными объектами привилегий в качестве ключей, но пользователь может появляться несколько раз под разными ключами, если у них есть несколько привилегий.
Основная проблема в том, что User::getPrivilege
s возвращает List<Privilege>
, и я знаю только, как обработать один Privilege
.