当前位置:  开发笔记 > 编程语言 > 正文

如何深度复制不规则的2D数组

如何解决《如何深度复制不规则的2D数组》经验,为你挑选了2个好方法。

如何在Java中深度复制不规则形状的2D数组?

IE浏览器.

int[][] nums =  {{5},
                 {9,4},
                 {1,7,8},
                 {8,3,2,10}}

Arrays.arrayCopy()出于某种原因无法使用(版本控制?)



1> Joao da Silv..:
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()替换第二个循环.



2> slim..:

我在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是任意的.

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有