我有一个大小为5000的数组A
,以及一个任意大小但小于B
的较小数组A
。我的小数组总是产生新的值,我不想放松,因此我将它们添加到数组A
并继续,但是我被卡住了,因为每当我尝试将较小的值复制到较大的而不是从它的地方追加时剩下的就完全删除了先前的值,数组A
变得等于数组B
。
offset = offset + B.length;
System.arraycopy(B, 0, A, offset, B.length);
此语句处于循环中,每次都会更新B
。
答案 0 :(得分:3)
使用ArrayList
代替它会更好。 ArrayList
本质上是一个具有无限容量的数组。你可以继续添加东西,它永远不会用完房间。它还为您添加了一些东西,而无需计算最终索引。因此,如果您提出A
和B
ArrayList
s,那么您的代码将变为以下内容:
A.addAll(B);
就是这样。
答案 1 :(得分:0)
首先,请查看此链接,然后查看解释length
参数的部分:http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/System.html。我认为你的问题在于传入的长度参数。
语句offset = offset + B.length;
也应该在循环之后,因为你传入的是一个可变大小A.length + B.length
,假设只是B.length
,你想要放置数组{ {1}}。
B
所在的参数是目标数组。因此,您必须将A
重新声明为A
的长度。
希望这有帮助。