java - 从 java 8 中的对象列表创建字符串和列表的映射
问题描述
我有一个名字,身份证,地址List<Emp>
在哪里。Emp
保存的价值就像
("Name1, 11, Delhi"),
("Name1, 12, Chennai"),
("Name2, 13, Delhi"),
("Name3, 14, Delhi"),
("Name4, 15, Delhi")
我正在尝试创建一个Map
以键为名称和值的列表,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);
}
);
解决方案
使用 aStream
并使用收集器收集其元素groupingBy
:
Map<String, List<Emp>> nameMap =
empList.stream()
.collect(Collectors.groupingBy(Emp::getName));
推荐阅读
- amazon-web-services - AWS Eventbridge 规则能否匹配数组内的对象
- windows - 如何找出用户机器上安装了哪些 Visual Studio 扩展?
- sql - 在使用 Tableau 时保存 SQL 版本的最佳方法是什么?
- javascript - If 语句始终返回 True
- bash - 获取准备好进行阶段批准的 AWS 管道列表
- javascript - 如何在新 div 中显示正在加载的图像的文件名?
- reactjs - React hooks - 从 api 获取数据并传递给组件
- php - Wix API 库存集成
- r-markdown - rmarkdown 中的 Stargazer ARIMA 包显示完整输出
- flutter - 我在颤振上获取地理位置时遇到问题