java - HashMap 的副本

标签 java hashmap clone

我有一个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 ,您需要执行以下操作:

  1. 创建一个新的 HashMap 对象
  2. 迭代旧映射中的所有条目,并将键和值的(深层)克隆添加到新映射中

因为==比较的是对象引用,而不是 map 的内容。

关于java - HashMap 的副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10413107/

相关文章:

java - 如何设计一个模型来允许应用或取消更新?

java - HyperJAXB 和 IDREF

java - 如何从 Java 设置环境变量?

java - 如何获取 URL 以便能够将其传递给 Activity

java - 如何根据日期对 hashmap<String , String> 的 ArrayList 的数据进行排序

python - 在 dictionary.values() 列表与集合中查找的时间复杂度

c++ - 如何实现具有循环引用的对象的深拷贝或克隆?

javascript - 使用 jquery 的 clone() 时,是否有跨浏览器的方法来忽略不透明度?

java - 按数字拆分字符串

Git 克隆在 Windows bash 中挂起