Я пытаюсь выучить агрегатные функции и лямбды в Java. У меня есть класс:
public class Person {
public enum Privilege{
PRIV1, PRIV2, PRIV3, PRIV4, PRIV4
}
private String name;
private Set<Privilege> privileges;
...
}
и список объектов этого класса. Я хочу преобразовать его в EnumMap<Privilege, List<String>>
, где список содержит имена всех людей, имеющих определенные привилегии. Я создал метод для этого:
public static Map<Privilege,List<String>> personsByPrivilege(List<Person> personList){
Map<Privilege, List<String>> resultMap = new EnumMap(Privilege.class);
Arrays.asList(Privilege.values())
.stream()
.forEach(p->resultMap.put(p,new ArrayList<String>()));
for(Person p :personList){
Set<Privilege> personsPrivileges = p.getPrivileges();
for(Privilege pr : personsPrivileges){
resultMap.get(pr).add(p.getName());
}
}
return resultMap;
}
Как мне это сделать, используя агрегатные функции ? Я имею в виду, например, personlist.stream().collect
стиль