java - 如何在 java 8 中加入或合并 HashMap 列表
问题描述
我有哈希图列表,如果下面的键相同,我想加入值我已经提到了输入和预期输出。我已经经历了许多与此问题相关的问题答案仍然找不到解决方案。
输入 :
[
{
"id": "316",
"text1": true
},
{
"id": "316",
"text2": true
},
{
"id": "315",
"text1": true
},
{
"id": "315",
"text2": true
}
]
输出:
[
{
"id": "316",
"text1": true,
"text2": true
},
{
"id": "315",
"text1": true,
"text2": true
}
]
代码片段:
List list1= new ArrayList();
HashMap details= new HashMap();
details.put("id", "305");
details.put("text1",true);
list1.add(details);
HashMap details2= new HashMap();
details2.put("id", "305");
details2.put("text2",true);
list1.add(details2);
解决方案
根据@Thomas 评论,您可以这样做:
Map<String, Map<String, Object>> mapMap = new HashMap<>();
list.forEach(map -> map.entrySet().forEach(entry ->
mapMap.merge((String) map.get("id"), map, (map1, map2) -> {
map1.putAll(map2);
return map1;
}))
);
System.out.println(mapMap.values());
推荐阅读
- c - 如何打印字符 *
- azure - 我的域的 DNS 记录没有通过 dns-01 挑战在 azure-dns 上传播
- javascript - 如何在Angular组件中使用`this`重新分配对象?
- flask - Flask 应用程序上下文错误未通过“with”子句解决
- android - Firebase FCM 通知图片不会显示
- fortran - 互操作性:Fortran 到 C++
- python - 为什么此输出列表在此代码中不起作用?
- createjs - 第一次播放后音效延迟
- linux - 您如何解决“构建失败:未指定 Android SDK 目录,正在退出。”
- javascript - Quickblox 膨胀的 webpack 包