簡體   English   中英

不使用ArrayList將2D數組轉換為1D Array

[英]Converting 2D array to 1D Array without using ArrayList

創建將2d數組轉換為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*/
}

行和列是否平衡

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

否則,您必須遍歷整個數組,同時保持長度計數

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

您可以通過這種方式簡單地計算大小(即數* 列數 ):

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

1)如果是矩形2D數組,則以這種方式計算大小

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;
}

或者您可以只使用流而不必自己照顧大小:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM