Copying two bi-dimensional arrays to another bidimensional array Java
我还有一个Java问题:
我读过这篇文章,它清楚地解释了它,但是我有两个二维数组,我想复制它们。
我知道这段代码
1 2 3 |
但我的问题是,如何将它与两个数组合并
1 2 3 | int a1[][] = new int [3][3]; int b1[][] = new int [3][3]; int c1[][] = new int [3][6]; |
号
C1在哪里合并上述数组?
使用问题中提到的任务中的解决方案。例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | import java.util.Arrays; public class ArrayProgram { public static void main(String[] args) { int[][] array1 = { { 1, 2, 3 }, { 1, 2, 3 }, { 1, 2, 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, 0, array1and2, 0, array1.length); System.arraycopy(array2, 0, array1and2, array1.length, array2.length); return array1and2; } } |
印刷品:
1 2 3 | [1, 2, 3, 4, 5, 6] [1, 2, 3, 7, 8, 9] [1, 2, 3, 0, 1, 2] |
。
编辑任何参数编号(可变长度参数列表)的实现:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | import java.util.Arrays; public class ArrayProgram { public static void main(String[] args) { int[][] array1 = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }; int[][] array2 = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }; int[][] array3 = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 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, 0, 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 2 3 4 5 6 7 8 9 10 11 | [1, 2, 3] [4, 5, 6] [7, 8, 9] [1, 2, 3, 1, 2, 3] [4, 5, 6, 4, 5, 6] [7, 8, 9, 7, 8, 9] [1, 2, 3, 1, 2, 3, 1, 2, 3] [4, 5, 6, 4, 5, 6, 4, 5, 6] [7, 8, 9, 7, 8, 9, 7, 8, 9] |
。
像这样的东西应该很好用?
1 2 3 4 5 6 7 8 |
顺便说一句,我从你们的维度假设C看起来像:
1 2 3 | [ a, a, a, , , ] [ a, a, a, , b, ] [ a, a, a, , , ] |
号