我有一个A
大小为 5000 的数组,以及一个B
任意大小但小于A
. 我的较小数组总是产生我不想丢失的新值,因此我将它们添加到数组中A
并继续,但是我被卡住了,因为每当我尝试将较小的数组复制到较大的数组而不是从它完全离开的位置附加删除先前的值,并且 arrayA
变得等于 array B
。
offset = offset + B.length;
System.arraycopy(B, 0, A, offset, B.length);
该语句处于B
每次更新的循环中。
改用ArrayList
s 会更好。AnArrayList
本质上是一个容量无限的数组。你可以继续添加东西,它永远不会用完空间。它还为您添加了一些内容,而无需您计算结束索引。因此,如果您使用A
and B
ArrayList
s,那么您的代码将变为以下内容:
A.addAll(B);
而已。
首先,看看这个链接,看看解释length
参数的部分:http: //docs.oracle.com/javase/1.4.2/docs/api/java/lang/System.html。我认为您的问题在于传入的长度参数。
此外,该语句offset = offset + B.length;
应该在循环之后,因为您正在传递一个变量 size A.length + B.length
,正如您所希望的那样B.length
,这是您想要放置 array B
。
参数 where A
is 是目标数组。所以你必须重新声明A
为 的长度offset
。
希望这可以帮助。