Sea*_*aid 5 java arrays deep-copy multidimensional-array
如何在Java中深度复制不规则形状的2D数组?
IE浏览器.
int[][] nums = {{5},
{9,4},
{1,7,8},
{8,3,2,10}}
Run Code Online (Sandbox Code Playgroud)
我Arrays.arrayCopy()
出于某种原因无法使用(版本控制?)
Joa*_*lva 13
int[][] copy = new int[nums.length][];
for (int i = 0; i < nums.length; i++) {
copy[i] = new int[nums[i].length];
for (int j = 0; j < nums[i].length; j++) {
copy[i][j] = nums[i][j];
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用System.arraycopy()或Arrays.copyOf()替换第二个循环.
我在Eclipse中编写了这个,对它进行了测试,然后回来发现João已经把我击败了几乎完全相同的解决方案.我赞成他,但这是我的比较.我想看到人们选择以不同方式做的非常微小的细节是有益的.
private static int[][] copy2d(int[][] nums) {
int[][] copy = new int[nums.length][];
for (int i = 0; i < copy.length; i++) {
int[] member = new int[nums[i].length];
System.arraycopy(nums[i], 0, member, 0, nums[i].length);
copy[i] = member;
}
return copy;
}
Run Code Online (Sandbox Code Playgroud)
为了额外的功劳,尝试编写一个复制n维数组的地方,其中n是任意的.