如何在Java中深度复制不规则形状的2D数组?
IE浏览器.
int[][] nums = {{5}, {9,4}, {1,7,8}, {8,3,2,10}}
我Arrays.arrayCopy()
出于某种原因无法使用(版本控制?)
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]; } }
您可以使用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; }
为了额外的功劳,尝试编写一个复制n维数组的地方,其中n是任意的.