【发布时间】:2011-08-05 20:50:03
【问题描述】:
我有一个包含 X 个元素的 Hashmap
我需要将此地图移动到另一张地图中
这就是我的代码的样子
Map originMap = initialize();
Map destMap = new Hashmap ();
int originMapSize = originMap.size();
Set<Map.Entry<K, V>> entries = originMap.entrySet();
for (Map.Entry<K, Y> mapEntry : entries) {
K key = mapEntry.getKey();
V value = mapEntry.getValue();
destMap.put (key,value);
}
// Shouldnt this be equal to originMapSize ????
int destMapSize = destMap.size();
我观察到的是 - originMapSize 不等于 destMapSize
似乎当我们将元素放入 destMap 时,某些元素被覆盖了
我们已经覆盖了 hashCode 和 equals 方法——这是一个可疑的实现。
但是,如果 originMap 允许添加元素,为什么destinationMap 不添加新元素并覆盖现有元素呢?
【问题讨论】:
-
初始化方法是做什么的,为什么
i++在里面? -
你如何初始化在你的 for 循环中迭代的“条目”变量?
-
如果映射中已经存在一个键,那么它将覆盖之前的值。
-
i++ 仅用于调试目的。现在删除它。
-
@Varun:我的问题是 - 为什么第一个映射允许两个键同时存在而第二个映射覆盖它
标签: java collections hashmap