2013-07-23 95 views
1

我有2D Java數組,例如:在左邊展開Java 2D陣列,右

int[]][]arr = {{1, 2, 3, 4, 5, 6}, {7, 8, 9, 10, 11, 12}} 

我想複製的這幾個右左,右列和我的數組的左右兩側。這是我的目標:

int[][] arr = {{5, 6, 1, 2, 3, 4, 5, 6, 1, 2}, {11, 12, 7, 8, 9, 10, 11, 12, 7, 8}} 

在現實生活中我的數組是非常大的(1500x600),我需要一個快速的解決方案。 我知道System.arraycopy,但無法弄清楚如何在這裏使用它。

+0

你能澄清一下你想幹什麼?您正在嘗試將第一個數組中的值複製到另一個數組中? – leigero

+1

*「但無法弄清楚如何在這裏使用它。」*給你最好的嘗試。如果失敗,請發佈[SSCCE](http://sscce.org/)。 –

+0

leigero,是的我需要創建另一個數組。 – karasiov

回答

2

爲您發佈爲例數組:

int[][] arr1 = {{1, 2, 3, 4, 5, 6}, {7, 8, 9, 10, 11, 12}} 
int[][] arr2 = new int[2][10]; 

// ... 

for(int n = 0; n < arr1.length; n++) { 
    System.arrayCopy(arr1[n], 0, arr2[n], 0, 2); 
    System.arrayCopy(arr1[n], 0, arr2[n], 2, 6); 
    System.arrayCopy(arr1[n], 4, arr2[n], 6, 2); 
} 

// here arr2 will have what you want 
+0

我認爲,在for循環中它必須是'n ++'。另外爲什麼三個'arrayCopy'語句? –

+0

我認爲你混合了這些指數。這導致'{1,2,1,2,3,4,5,6,5,6}'。 –

+0

@RavindraGullapalli對不起,在澳大利亞是睡覺的時候,我的大腦已經有一半已經睡着了,修復了n++部分。您需要三個arrayCopy,因爲您正在執行三個不同的「副本」:左側部分,「右側」部分和中間的原始內容。 – morgano