在Java中组合两个hashMap对象时如何合并列表

mar*_*ixs 5 java hashmap

我有两个HashMap定义如下:

HashMap<String, List<Incident>> map1 = new HashMap<String, List<Incident>>();
HashMap<String, List<Incident>> map2 = new HashMap<String, List<Incident>>();
Run Code Online (Sandbox Code Playgroud)

另外,我有一个第三个HashMap对象:

HashMap<String, List<Incident>> map3;
Run Code Online (Sandbox Code Playgroud)

和两者结合时的合并列表.

Cha*_*ase 6

总之,你不能.map3没有正确的类型来将map1和map2合并到其中.

但是,如果它也是一个HashMap<String, List<Incident>>.您可以使用putAll方法.

map3 = new HashMap<String, List<Incident>>();
map3.putAll(map1);
map3.putAll(map2);
Run Code Online (Sandbox Code Playgroud)

如果要合并HashMap中的列表.你可以这样做.

map3 = new HashMap<String, List<Incident>>();
map3.putAll(map1);
for(String key : map2.keySet()) {
    List<Incident> list2 = map2.get(key);
    List<Incident> list3 = map3.get(key);
    if(list3 != null) {
        list3.addAll(list2);
    } else {
        map3.put(key,list2);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 也许OP希望将"a" - > [1,2]`和`"a" - > [3,4]`合并为"a" - > [1,2,3,4]`,因为地图的值是一个`List`. (4认同)