2013-07-23 57 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