我有Hashmap <integer, Arraylist<Double>>
。我想复制一份。我在考虑使用hashmap的方法clone
。经过javadoc后,它
说以下内容:
clone
Returns a shallow copy of this HashMap instance: the keys and values themselves are not cloned.
这个浅拷贝是什么意思?我想要一个单独的矩阵,其值在更新原始矩阵的值时不会改变。
此外,为什么,
if( hm1 == hm1.clone())
返回false?
答案 0 :(得分:8)
浅拷贝意味着只创建了新的地图对象,但没有克隆其值,即拷贝包含对旧条目的引用。因此,要“深度克隆”您需要执行的地图:
因为==
比较了对象引用,而不是地图的内容。
答案 1 :(得分:0)
Map包含键(在您的情况下为整数实例)和值(ArrayLists)。在克隆的地图中,所有键和值都是相同的实例。
E.g。你有 整数k1 = new Integer(1); Arraylist value1 = new Arraylist();
originalMap.put(k1,value1);
在clonedMap中,所有唯一的键是最初为k1创建的相同实例。价值相同。