我有一个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);
}
);
答案 0 :(得分:2)
使用Stream
并通过groupingBy
收集器收集其元素:
Map<String, List<Emp>> nameMap =
empList.stream()
.collect(Collectors.groupingBy(Emp::getName));