加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 使用.clone()复制2D数组仍然引用原始数据

发布时间:2020-12-15 08:45:40 所属栏目:Java 来源:网络整理
导读:好的,我知道之前已经问过这个问题: Previous Question 我还研究了其他几个主题和网站,他们似乎都创造了更多问题而不是答案. Josh Bloch on Design – 讨论.clone()的文章; 但我仍然无法解决我的问题. 当我克隆我的2D数组时: values = Map.mapValues.clone(
好的,我知道之前已经问过这个问题: Previous Question

我还研究了其他几个主题和网站,他们似乎都创造了更多问题而不是答案.

Josh Bloch on Design – 讨论.clone()的文章;

但我仍然无法解决我的问题.

当我克隆我的2D数组时:

values = Map.mapValues.clone();

我仍然无法安全地修改值的内容,因为它仍然修改了Map.mapValues的内容.

有没有办法复制一个比我更有效的数组,每次只是从头开始重新创建一个?

谢谢

解决方法

在Java中,2D数组是对一维数组的引用数组. Map.mapValues.clone()只克隆第一层(即引用),因此最终会得到一个对相同底层1D数组的新引用数组.这就是您尝试使用clone()不起作用的原因.

解决这个问题的一种方法是克隆底层的1D数组:

byte[][] values = Map.mapValues.clone();
for (int i = 0; i < values.length; i++) {
  values[i] = values[i].clone();
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读