我有两个HashMaps,其中key是String,value是ArrayList。我需要合并这两个地图的方式,如果 -合并两个地图<String,List>
- 如果密钥不存在,密钥应映射给定的值。
- 如果密钥已经存在,我想要将现有值与新值合并,即existingList.addAll(newList)。
初始代码有点样子 -
在地图检查的所有键如果
if (map1.containsKey("key")){
List l = map1.get ("key");
l.addAll(map2.get("key"));
}
else{
map1.put(map2);
}
我不关心重复的元素在这里。有没有一种干净的方式来做到这一点?我已经阅读了关于在Java 8中引入的合并方法。但是因为这些值是List类型,所以我正在寻找更高效和干净的方式。
我会建议只按照你描述的方式写它。然后,你可以随时重构它。 – f1sh
你可以添加第一次尝试的代码吗?基于此,讨论清洁度和效率会更容易 – reto
我不确定你的意思是“*我不在乎这里的重复元素*”。除此之外,'合并'似乎是要走的路,即'map2.forEach((k,v) - > map1.merge(k,v,(l1,l2) - > {l1.addAll(l2); return l1;}));' – Holger