gpt4 book ai didi

java - 合并两个 Map

转载 作者:行者123 更新时间:2023-11-30 02:43:53 31 4
gpt4 key购买 nike

我有两个 HashMap,其中键是 String,值是 ArrayList。我需要以这样的方式合并这两个 map ,如果 -

  1. 如果键尚不存在,则应使用给定的值映射键。
  2. 如果键已经存在,我希望现有值与新值合并,即,existingList.addAll(newList)。

初始代码有点像--

对于 map 的所有键检查是否

 if (map1.containsKey("key")){
List l = map1.get ("key");
l.addAll(map2.get("key"));
}
else{
map1.put(map2);
}

我不关心这里的重复元素。有没有一种干净的方法可以做到这一点?我已经阅读了 Java 8 中引入的合并方法。但是由于这里的值是 List 类型,我正在寻找一种更高效、更干净的方法。

最佳答案

希望这段代码有帮助。您应该迭代其中一个列表并添加或更新另一个列表。

public static HashMap<String, ArrayList<Object>> merge(HashMap<String, ArrayList<Object>> list_1, HashMap<String, ArrayList<Object>> list_2) {
//Iterate second hash map
Iterator it = list_2.entrySet().iterator();
while (it.hasNext()) {
Map.Entry pair = (Map.Entry) it.next();
String key = (String) pair.getKey();
ArrayList<Object> value = (ArrayList<Object>) pair.getValue();
if(list_1.containsKey(key)){
//UPDATE
list_1.replace(key, value); //Replaces the entry for the specified key only if it is currently mapped to some value.
} else {
//ADD
list_1.put(key, value);
}
}
return list_1;
}

关于java - 合并两个 Map<String,List>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40805777/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com