二维数组的正确copy方法是
public int[][] clone(int[][] arr) {
int[][] fuckthem = new int[arr.length][arr[0].length];
for (int i = 0; i < arr.length; i++) {
fuckthem[i] = arr[i].clone();
}
return fuckthem;
}
起因
刷POJ3009题时碰到的问题(此处应有链接:http://poj.org/problem?id=3009),用dfs寻找到达目的地的最小步数,结果每一步搜索只选了一次方向,原因就算复制图时,把原始图的数据给改了。
一开始我是这样写的,发现改完copyOfMaps,maps也被改变了,导致递归回退时,整个图已经被改得乱七八糟了。
int[][] maps = new int[][]{
{1, 1},
{0, 1}
};
int[][] copyOfMaps = maps.clone();
本文介绍了在Java中实现二维数组深拷贝的一种有效方法,避免了浅拷贝带来的原始数据被修改的问题。通过具体实例展示了如何使用这种方法来确保递归过程中数据的独立性。

3207

被折叠的 条评论
为什么被折叠?



