【问题标题】:How to concatenate an uneven 2 dimensional array into a 1-d array (java)如何将不均匀的二维数组连接成一维数组(java)
【发布时间】:2026-01-10 09:55:02
【问题描述】:

当我连接具有偶数行的二维数组时,此方法有效:

public static int[] concArr(int[][] arr){
        int[] oneD = new int[arr.length * arr.length];
          for(int i = 0; i < arr.length; i ++)
          {
            for(int j = 0; j < arr.length; j ++)
            {
                oneD[(i * arr.length) + j] = arr[i][j];
            }
          }
        return oneD;

    }

但是,如果一个数组是不均匀的,即:

{ {1, 2, 3},
  {4},
  null,
  {},
  {5,6}};

那么代码将不起作用。我该怎么做?

【问题讨论】:

    标签: java arrays multidimensional-array


    【解决方案1】:

    1 . for(int j = 0; j &lt; arr[i].length; j ++)

    注意arr[i].length 而不是arr.length,您必须考虑当前行的长度,因为行的长度不等。

    2 。代替oneD[(i * arr.length) + j] 使用变量来保存结果数组中的当前位置;此变量初始化为 0,并在内部循环中递增。

    【讨论】:

    • #1 有道理,我应该考虑一下。您能否更详细地解释#2 - 您持有当前职位是什么意思?你的意思是创建一个 temp = arr[i][j]? (对不起,我是新手)
    • 不,不需要临时的。您需要一个变量来保存oneD 数组中的当前索引,这样您就知道在哪里复制arr[i][j]
    • 还是想不通。