hashmap的java副本
我有一个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
# 1 楼答案
浅复制意味着只有地图对象被创建为新对象,但其值不会被克隆,即副本包含对旧条目的引用。因此,要“深度克隆”地图,您需要执行以下操作:
因为
==
比较的是对象引用,而不是映射的内容# 2 楼答案
Map有键(在您的例子中是整数实例)和值(ArrayList)。在克隆映射中,所有键和值都将是相同的实例
你有 整数k1=新整数(1); Arraylist value1=新的Arraylist()
原始地图。put(k1,value1)
在clonedMap中,唯一的键是最初为k1创建的同一个实例。价值也一样