gpt4 book ai didi

java - 使用 .clone() 复制二维数组仍然引用原始数据

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:32:35 26 4
gpt4 key购买 nike

好的,我知道之前有人问过这个问题:Previous Question

我还研究了一些其他话题和网站,它们似乎都提出了比答案更多的问题。

Josh Bloch on Design - 一篇讨论 .clone();

的文章

但我仍然无法找到问题的答案。

当我克隆二维数组时:

values = Map.mapValues.clone();

我仍然不能安全地修改 values 的内容,因为它仍然修改 Map.mapValues 的内容。

是否真的有一种复制数组的方法比我每次都从头开始重新创建一个数组更有效?

谢谢

最佳答案

在 Java 中,二维数组是对一维数组的引用的数组。 Map.mapValues.clone() 仅克隆第一层(即引用),因此您最终会得到一个新的引用数组相同的底层一维数组。这就是您尝试使用 clone() 失败的原因。

解决此问题的一种方法是同时克隆底层的一维数组:

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

关于java - 使用 .clone() 复制二维数组仍然引用原始数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8299771/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com