不使用ArrayList将2D数组转换为1D数组

时间:2018-02-07 13:30:15

标签: java arrays multidimensional-array

创建将2d数组转换为1D数组的函数

但是在宣言时,1D数组的大小如何给新的1D数组赋予大小

int[] convert(int[][] input){
    int[] result;
    int z=0;
    for(int row=0;row<input.length;row++) {
        for(int col=0;col<input[row].length;col++) {
            result[z]=input[row][col];
            z++;
        }
    }
    return result;/* Error comes here For Initialization. How to initialize before Knowing size*/
}

4 个答案:

答案 0 :(得分:4)

如果行和列是平衡的

int result[] = new int[input.length * input[0].length];

否则,你必须循环遍历整个数组,同时保持长度计数

int len = 0;
for(int[] a : input){
    len+=a.length;
}
int[] result = new int[len];

答案 1 :(得分:1)

你可以这样简单地计算尺寸(即行的数量 * 列的数量):

int[] result = new int[input.length * input[0].length] ;

答案 2 :(得分:0)

1)如果是矩形二维数组,请以这种方式计算大小

int array[]  = new int[input.length * input[0].length];

2)如果它不是矩形,则遍历每一行并添加每个子阵列的长度

int size = 0;
for(int i=0;i<input.length;i++){
 size += input[i].length;
}

答案 3 :(得分:0)

或者您可以只使用不必要的流来自己处理大小:

int[] convert(int[][] input){    
    return Stream.of(input).flatMapToInt(x -> Arrays.stream(x)).toArray();
}