Java Lambda Stream List <user> to Map <role,list <user =“”>&gt;

时间:2015-12-10 11:54:36

标签: java lambda java-stream

我必须编写一个方法,该方法需要List<User>并返回Map<Role,List<User>>

User包含Person个实例,其中包含Role 我必须创建一个映射,其中Role键映射到用户列表(用户具有此角色)。

我尝试了以下内容:

public static Map<Role, List<User>> groupUsersByRole(List<User> users) {
    users.stream().collect(Collectors.toMap((u -> u.getPersonDetails().getRole()), users.stream().collect(Collectors.toList()  ) )
    users.stream().map(user -> user).filter(u -> u.).collect(Collectors.toList()) );
    //users.stream().filter(u -> u.getPersonDetails().getRole().getName().equals(u.getPersonDetails().getRole().getName())).map(user -> user.getName()).
    return null;
}

1 个答案:

答案 0 :(得分:0)

您要找的是Collectors.groupingBy,它按照指定的属性对Stream的元素进行分组:

Map<Role, List<User>> map = users.stream().collect(Collectors.groupingBy(u->u.getPersonDetails().getRole()));