在java中多次将数组复制到另一个数组中

时间:2015-06-25 12:49:54

标签: java

我想多次将数组从一个Integer数组复制到另一个数组中。

int a[6]={1,2,3};
int b[]=new int[12];
for(int i=0;i<12;i++)
{
b[i]=a[i];
System.out.println(b[i]);
}

我想要这样的输出:

1,2,3,1,2,3,1,2,3,1,2,3

我应该如何将所有元素从[]复制到b []多次。

2 个答案:

答案 0 :(得分:2)

您可以使用模数运算符:

for(int i=0;i<12;i++)
{
    b[i]=a[i%a.length];
    System.out.println(b[i]);
}

i%a.length将从0重复迭代到a.length-1。

答案 1 :(得分:0)

做你想要的(我能想到的)最有效的方法是复制批次。

所以我们得到了两个输入数组:

int a[] = {1, 2, 3};
int b[] = new int[12];

我们要做的是将第一个数组复制到第二个数组,直到第二个数组被填充为止。

第一批很简单。只需将第一个数组复制到第二个数组中即可。

System.arraycopy(a, 0, b, 0, a.length);

现在我们将第二个数组中的数据追加到第二个数组的空闲字段中。

int usedSize = a.length; 
while (usedSize < b.length) {
    System.arraycopy(b, 0, b, usedSize, Math.min(b.length - usedSize, usedSize);
    usedSize *= 2; 
}

您的数组b将以下列方式更改:

{1,2,3,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x}
{1,2,3,1,2,3,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x}
{1,2,3,1,2,3,1,2,3,1,2,3,x,x,x,x,x,x,x,x,x,x,x,x}
{1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3}

因此它减少了所需的复制步骤,即使对于大型阵列也能非常快速地工作。 System.arraycopy最终是复制数组内容的最快方法。