[英]java: join all hashmaps from an array list
我有一个哈希表的列表,我想将这些哈希表合并为一个(键应该是唯一的)。 我该怎么做? 有人可以给我提示吗?
一种实现方法是创建一个新的HashMap ubermap
实例,遍历ArrayList<HashMap>
并调用ubermap的putAll()
方法,一次调用一个映射。 一个明智的优化是为有问题的ubermap
提供较大的初始容量,这样您就可以避免许多重新调用。
您可以从哈希映射中迭代trought 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;
}
您应该看看Map.putAll()函数
Map
具有方法putAll(Map m)
。 遍历您的列表,并在每个条目的结果图上执行putAll
。
您可以使用for-each循环,并使用HashMap.putAll()从列表中的一个哈希图中一一添加地图。
遍历list
并使用putAll()
将所有地图添加到生成的地图中
方法如下:
创建一个新的(大)哈希表,其中将包含合并的键值对
遍历您的清单
对于列表中的每个项目,请遍历有问题的哈希表
对于哈希表的每个值,将对添加到(大)哈希表中
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.