How merge list when combine two hashMap objects in Java
我有两个HashMap定义如下:
1 2
| HashMap <String, List <Incident >> map1 = new HashMap <String, List <Incident >>();
HashMap <String, List <Incident >> map2 = new HashMap <String, List <Incident >>(); |
另外,我有一个第3个HashMap对象:
1
| HashMap <String, List <Incident >> map3 ; |
和两者结合时的合并列表。
-
请看这里stackoverflow.com/questions/4299728/…
-
这是一个完全不同的问题,而不是"如何组合包含相同类型的两个HashMap对象?" 这个问题是关于组合多值映射。 问题是需要一种用于组合List中的值的解决方案。 map.putAll()将替换列表,而不是两者结合。
总之,你不能。 map3没有正确的类型来将map1和map2合并到其中。
但是,如果它也是HashMap>。 您可以使用putAll方法。
1 2 3
| map3 = new HashMap <String, List <Incident >>();
map3. putAll(map1 );
map3. putAll(map2 ); |
如果要合并HashMap中的列表。 你可以这样做。
1 2 3 4 5 6 7 8 9 10 11
| 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 );
}
} |
-
也许OP希望将"a"->[1,2]和"a"->[3,4]合并到"a"->[1,2,3,4]中,因为地图的值是List。
-
好的,点,我会在上面添加一些内容。
-
是的,我想合并列表
创建第三个地图并使用putAll()方法从ma添加数据
1 2 3 4 5 6 7
| 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遍历两个地图
使用commons集合:
1
| Map <String, List <Incident >> combined = CollectionUtils. union(map1, map2 ); |
如果你想要一个Integer映射,我想你可以将.hashCode方法应用于Map中的所有值。
-
CollectionUtils.union不适用于地图,仅适用于集合。
HashMap有一个putAll方法。
请参考:
http://docs.oracle.com/javase/6/docs/api/java/util/HashMap.html