我想多次将数组从一个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 []多次。
答案 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
最终是复制数组内容的最快方法。