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

时间:2013-07-12 05:17:52

标签: java hashmap

我有两个HashMap定义如下:

HashMap<String, List<Incident>> map1 = new HashMap<String, List<Incident>>();
HashMap<String, List<Incident>> map2 = new HashMap<String, List<Incident>>();

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

HashMap<String, List<Incident>> map3;

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

4 个答案:

答案 0 :(得分:6)

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

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

map3 = new HashMap<String, List<Incident>>();
map3.putAll(map1);
map3.putAll(map2);

如果要合并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);
    }
}

答案 1 :(得分:4)

创建第三个地图并使用putAll()方法从ma

添加数据
HashMap<String, Integer> map1 = new HashMap<String, Integer>();

HashMap<String, Integer> map2 = new HashMap<String, Integer>();

HashMap<String, Integer> map3 = new HashMap<String, Integer>();
map3.putAll(map1);
map3.putAll(map2);

如果不是map3 EntrySet

,那么{{1}}的 不同的 类型就有问题

答案 2 :(得分:0)

使用commons collections

Map<String, List<Incident>> combined = CollectionUtils.union(map1, map2);

如果你想要一个整数地图,我想你可以将.hashCode方法应用于地图中的所有值。

答案 3 :(得分:-1)

HashMap有一个putAll方法。

参考: http://docs.oracle.com/javase/6/docs/api/java/util/HashMap.html