我有兩個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