我有一个哈希映射的aray列表,我想将这些哈希映射合并为一个(密钥应该是唯一的)。我该怎么做?任何人都可以给我一个暗示吗?
答案 0 :(得分:3)
一种方法是创建HashMap ubermap
的新实例,迭代ArrayList<HashMap>
并调用ubermap的putAll()
方法,一次一个地图。智能优化可以为问题ubermap
提供较大的初始容量,这样您就可以避免多次重新调用。
答案 1 :(得分:1)
您可以从哈希映射中迭代t Map.Entry
个条目。您可以使用entrySet()
方法获取条目。
代码应如下所示:
public static <X,Y> Map<X,Y> test(Collection<Map<X,Y>> maps){
HashMap<X,Y> result = new HashMap<X,Y>();
for (Map<X,Y> singleMap:maps){
for(Map.Entry<X,Y> entry:singleMap.entrySet()){
result.put(entry.getKey(),entry.getValue());
}
}
return result;
}
UPD :许多用户明智地建议使用putAll
方法,但我忘记了。所以最好使用这段代码:
public static <X,Y> Map<X,Y> test(Collection<Map<X,Y>> maps){
HashMap<X,Y> result = new HashMap<X,Y>();
for (Map<X,Y> singleMap:maps){
result.putAll(singleMap);
}
return result;
}
答案 2 :(得分:1)
您应该查看Map.putAll()功能
答案 3 :(得分:0)
Map
有方法putAll(Map m)
。对列表进行迭代,并在结果映射中为每个条目执行putAll
。
答案 4 :(得分:0)
您可以使用for-each循环并使用HashMap.putAll()
从一个散列图中的列表逐个添加地图答案 5 :(得分:0)
循环浏览list
并使用putAll()
答案 6 :(得分:0)
这是方法:
创建一个包含合并键值的新(大)hashmap 对
遍历您的列表
对于列表中的每个项目,遍历有问题的散列图
对于hashmap的每个值,在(大)hashmap中添加该对