5

我有两个HashMap像这样定义的:

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

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

HashMap<String, List<Incident>> map3;

以及合并两者时的合并列表。

4

4 回答 4

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);
    }
}
于 2013-07-12T05:19:46.313 回答
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

于 2013-07-12T05:19:01.240 回答
0

使用公共集合

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

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

于 2013-07-12T05:34:10.923 回答
-1

HashMap 有一个putAll方法。

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

于 2013-07-12T05:31:41.133 回答