将两个二维数组复制到另一个二维数组Java

前端之家收集整理的这篇文章主要介绍了将两个二维数组复制到另一个二维数组Java前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我还有一个 Java问题:)

我已经阅读了this线程,它清楚地解释了它,但我有两个我想要复制的二维数组.

我明白这段代码

int[] array1and2 = new int[array1.length + array2.length];
System.arraycopy(array1,array1and2,array1.length);
System.arraycopy(array2,array1.length,array2.length);

但我的问题是,如何将其与两个数组合并在哪里

int a1[][] = new int [3][3];
int b1[][] = new int [3][3];
int c1[][] = new int [3][6];

哪里c1是上述数组的合并?

解决方法

使用您在问题中提到的 task解决方案.例:
import java.util.Arrays;

public class ArrayProgram {

    public static void main(String[] args) {
        int[][] array1 = { { 1,2,3 },{ 1,3 } };
        int[][] array2 = { { 4,5,6 },{ 7,8,9 },{ 0,1,2 } };
        int[][] result = ArrayCopier.joinSecondDimension(array1,array2);
        for (int[] array : result) {
            System.out.println(Arrays.toString(array));
        }
    }
}

class ArrayCopier {

    public static int[][] joinSecondDimension(int[][] array1,int[][] array2) {
        int[][] array1and2 = new int[array1.length][];
        for (int index = 0; index < array1.length; index++) {
            array1and2[index] = join(array1[index],array2[index]);
        }
        return array1and2;
    }

    public static int[] join(int[] array1,int[] array2) {
        int[] array1and2 = new int[array1.length + array2.length];
        System.arraycopy(array1,array1.length);
        System.arraycopy(array2,array2.length);
        return array1and2;
    }
}

打印:

[1,3,4,6]
[1,7,9]
[1,2]

编辑
任何参数号的实现(Variable-Length Argument Lists):

import java.util.Arrays;

public class ArrayProgram {

    public static void main(String[] args) {
        int[][] array1 = { { 1,{ 4,9 } };
        int[][] array2 = { { 1,9 } };
        int[][] array3 = { { 1,9 } };
        test(array1);
        test(array1,array2);
        test(array1,array2,array3);
    }

    private static void test(int[][]... arrays) {
        int[][] result = ArrayCopier.joinSecondDimension(arrays);
        for (int[] array : result) {
            System.out.println(Arrays.toString(array));
        }
        System.out.println();
    }
}

class ArrayCopier {

    public static int[][] joinSecondDimension(int[][]... arrays) {
        int firstArrayLength = arrays[0].length;
        int[][] result = new int[firstArrayLength][];
        for (int index = 0; index < firstArrayLength; index++) {
            result[index] = join(getSecondDimArrays(index,arrays));
        }
        return result;
    }

    public static int[] join(int[]... arrays) {
        int[] result = new int[getTotalLength(arrays)];
        int destPos = 0;
        for (int[] array : arrays) {
            System.arraycopy(array,result,destPos,array.length);
            destPos += array.length;
        }
        return result;
    }

    private static int getTotalLength(int[]... arrays) {
        int length = 0;
        for (int[] array : arrays) {
            length += array.length;
        }
        return length;
    }

    private static int[][] getSecondDimArrays(int index,int[][]... arrays) {
        int[][] result = new int[arrays.length][];
        int resultIndex = 0;
        for (int[][] array : arrays) {
            result[resultIndex++] = array[index];
        }
        return result;
    }
}

打印:

[1,3]
[4,6]
[7,9]

[1,6,9,9]

猜你在找的Java相关文章