将两个二维数组复制到另一个二维数组Java
发布时间:2020-12-15 03:09:28 所属栏目:Java 来源:网络整理
导读:我还有一个 Java问题:) 我已经阅读了this线程,它清楚地解释了它,但我有两个我想要复制的二维数组. 我明白这段代码 int[] array1and2 = new int[array1.length + array2.length];System.arraycopy(array1,array1and2,array1.length);System.arraycopy(array2,
我还有一个
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] 编辑 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] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |