我有一个Hashmap <integer, Arraylist<Double>>
。我想复印一份。我正在考虑使用方法 clone
HashMap 。经过javadoc之后,它
说如下:
clone
Returns a shallow copy of this HashMap instance: the keys and values themselves are not cloned.
这个浅拷贝是什么意思?我想要一个单独的矩阵,其值在更新原始矩阵的值时不会改变。
而且为什么,
if( hm1 == hm1.clone())
返回错误?
最佳答案
浅复制意味着仅创建新的映射对象,但不克隆其值,即副本包含对旧条目的引用。因此,要“深度克隆” map ,您需要执行以下操作:
- 创建一个新的 HashMap 对象
- 迭代旧映射中的所有条目,并将键和值的(深层)克隆添加到新映射中
因为==
比较的是对象引用,而不是 map 的内容。
关于java - HashMap 的副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10413107/