Copy two 2D arrays to another 2D array
•
Java
I have another Java question:)
I've read the this thread and it clearly explains it, but I have two 2D arrays I want to copy
I understand this code
int[] array1and2 = new int[array1.length + array2.length]; System.arraycopy(array1,array1and2,array1.length); System.arraycopy(array2,array1.length,array2.length);
But my question is, how to merge it with two arrays and where
int a1[][] = new int [3][3]; int b1[][] = new int [3][3]; int c1[][] = new int [3][6];
Where C1 is the combination of the above arrays?
Solution
Use the task solution you mentioned in the problem Example:
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;
}
}
Print:
[1,3,4,6] [1,7,9] [1,2]
Edit the implementation of any parameter number (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;
}
}
Print:
[1,3] [4,6] [7,9] [1,6,9,9]
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码
