从Java 8中的对象列表创建字符串和列表的映射

时间:2020-03-05 13:15:55

标签: java arraylist java-8 hashmap

我有一个List<Emp>,其中Emp是名称,ID,地址。

保存的值就像

("Name1, 11, Delhi"),
("Name1, 12, Chennai"),
("Name2, 13, Delhi"),
("Name3, 14, Delhi"),
("Name4, 15, Delhi")

我正在尝试创建一个Map,其键为Name(名称),值作为Emp(具有这些名称)的列表。

这是我尝试过的,并且工作正常,但我正在寻找更好的方法。

Map<String, List<Emp>> nameMap = new HashMap<>();
  empList.forEach(
                empDto -> {
                    List<EmpDto> empDtoName = new ArrayList<>();
                    String name = empDto.getName();
                    if (nameMap .containsKey(name))
                    {
                        empDtoName = nameMap.get(name);
                    }
                    empDtoName.add(userRoleDto);
                    userRoleMap.put(usrNwId, empDtoName);
                }
        );

1 个答案:

答案 0 :(得分:2)

使用Stream并通过groupingBy收集器收集其元素:

Map<String, List<Emp>> nameMap =
    empList.stream() 
           .collect(Collectors.groupingBy(Emp::getName));
相关问题