簡體   English   中英

2D陣列串聯

[英]2D Array Concatenation

我需要一個給定輸入2D數組{{1,2},{3,4}}和(int)row = 2;的方法。 (int)column = 3,將產生一個串聯的2D數組{{1,2,1,2,1,2} {3,4,3,4,3,4}}。

我的嘗試是使用嵌套的for循環在水平和垂直方向上進行擴展,但均未成功。 這是我到目前為止的內容:

    int row = 2;
    int column = 5;
    int count = 0;
    int[][] list = {{12,3},{3,4}};

    int [][] renewed = new int[row*list.length][column*list[0].length]; 

    for (int l = 0; l<list.length; l++) {
        for (int k = 0; k<renewed.length; k+= list.length) {
            renewed[l+k] = list[l];
        }
    }        

    System.out.println(Arrays.deepToString(renewed));       
    }
}

^這將產生第一列的list [] []垂直擴展

    int row = 2;
    int column = 4;
    int[][] list = {{12,3},{3,4}};

    int [][] renewed = new int[row*list.length][column*list[0].length]; 
    for (int i = 0; i<list[0].length; i++) {
        for (int j = 0; j<renewed[0].length; j+=list[0].length) {
            renewed[0][j+i] = list[0][i];
        }
    }

    System.out.println(Arrays.toString(renewed[0]));       
}

^這將為第一行產生水平擴展的list [] [];

那么,如何將這兩種方法連接起來,以產生一種既可以水平擴展又可以垂直擴展的方法?

我認為最簡單的方法是遍歷新數組中的每個位置,並使用余數運算符%獲取原始數組的正確條目。

int[][] list = {{1,2},{3,4}};
int row = 2;
int column = 5;
int [][] renewed = new int[row*list.length][column*list[0].length];
for (int i = 0; i < renewed.length; i++) {
    for (int j = 0; j < renewed[0].length; j++) {
        renewed[i][j] = list[i % list.length][j % list[0].length];
    }
}
System.out.println(Arrays.deepToString(renewed));

暫無
暫無

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

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