从一维数组自动生成可变大小的二维数组

时间:2018-11-12 06:57:22

标签: java arrays multidimensional-array methods

我正在寻找有关如何创建一种基于两个参数生成2D数组的方法的建议,整数s决定2D数组的行数,而int x []将是不同的1D数组所在的位置长度为20的像素将填充2D数组的每一行。到目前为止,这是我想出的方法,但是它只用0s填充每一行,只有一行用输入数组填充。我基本上需要用一堆相同大小的1D数组填充自动生成的2D数组的每一行。请帮忙。谢谢 !

public class c {
   public int [][] f;

   public int [][] a(int x[], int s){
    f = new int [s][20];
    for(int j = 0; j < x.length; j++) {
        f[s-1][j] = x[j];
    }
   return f;
 }

  public void d(){
    for (int i =0; i < f.length; i++) {
        for(int j = 0; j < f[i].length; j++) {
            System.out.print(f[i][j] + " ");
        }
    System.out.println(" ");
    }
  } 
}

2 个答案:

答案 0 :(得分:0)

我可以看到,您所需要做的就是创建具有给定行数的2D数组,并将给定的1D数组复制到的每一行中。这很简单:

  • 创建新的2D阵列
  • 遍历每一行并将给定的数组放入其中

示例:

public static int[][] createArray(int[] arr, int totalRows) {
    int[][] res = new int[totalRows][arr.length];

    for (int row = 0; row < totalRows; row++)
        System.arraycopy(arr, 0, res[row], 0, res[row].length);

    return res;
}

答案 1 :(得分:0)

这可以通过使用Java中的流api来实现

int[][] arrInt = { { 1, 2 }, { 3, 4, 5 } };
int result[] = Arrays.stream(arrInt).flatMapToInt(Arrays::stream).toArray();
System.out.println(Arrays.toString(result));