问题描述
我有三个单独的数组,我想合并成一个多维数组
Array 3 [1,1,2,4,1]
Array 2 [1,6,1]
Array 1 [1,3,1]
我想要的输出是所有数组都在一个多维数组中,它们都彼此堆叠在一起。
最终数组=
Array 3
Array 2
Array 1
我将如何去做?
解决方法
如果我正确理解了您的问题,那么您正在寻找这样的东西:
import java.util.stream.IntStream;
public class MultiDimensionalArrayDemo {
public static void main(String[] args) {
final int ROWS = 3;
final int COLUMNS = 10;
int array1 [] = { 0,1,2,3,4,5,6,7,8,9};
int array2 [] = { 10,11,12,13,14,15,16,17,18,19};
int array3 [] = { 20,21,22,23,24,25,26,27,28,29};
int finalArray[][] = new int[ROWS][];
finalArray[0] = array1;
finalArray[1] = array2;
finalArray[2] = array3;
System.out.println("Initial bi-dimensional array:");
for(int i=0; i<ROWS; i++) {
for(int j=0; j<COLUMNS; j++) {
System.out.printf("%2d ",finalArray[i][j]);
}
System.out.println();
}
for(int i=0; i<ROWS-1; i++) {
for(int j=0; j<COLUMNS; j++) {
if(finalArray[i][j]==0) {
moveColumnUp(IntStream.range(i,ROWS).mapToObj(obj -> finalArray[obj]).toArray(int[][]::new),ROWS-i,j);
}
}
}
System.out.println("After transformation:");
for(int i=0; i<ROWS; i++) {
for(int j=0; j<COLUMNS; j++) {
System.out.printf("%2d ",finalArray[i][j]);
}
System.out.println();
}
}
private static void moveColumnUp(int matrix [][],int numberOfRows,int columnIndex) {
int firstRowElement = matrix[0][columnIndex]; // temporarily store first row so it can be placed last
for(int i=0; i<numberOfRows-1; i++) {
matrix[i][columnIndex] = matrix[i+1][columnIndex];
}
matrix[numberOfRows-1][columnIndex] = firstRowElement;
}
}