0

我有一个A大小为 5000 的数组,以及一个B任意大小但小于A. 我的较小数组总是产生我不想丢失的新值,因此我将它们添加到数组中A并继续,但是我被卡住了,因为每当我尝试将较小的数组复制到较大的数组而不是从它完全离开的位置附加删除先前的值,并且 arrayA变得等于 array B

offset = offset + B.length;
System.arraycopy(B, 0, A, offset, B.length);

该语句处于B每次更新的循环中。

4

2 回答 2

3

改用ArrayLists 会更好。AnArrayList本质上是一个容量无限的数组。你可以继续添加东西,它永远不会用完空间。它还为您添加了一些内容,而无需您计算结束索引。因此,如果您使用Aand B ArrayLists,那么您的代码将变为以下内容:

A.addAll(B);

而已。

于 2013-10-13T23:23:18.297 回答
0

首先,看看这个链接,看看解释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 Ais 是目标数组。所以你必须重新声明A为 的长度offset

希望这可以帮助。

于 2013-10-13T23:47:26.803 回答