示例 1:使用 arraycopy 连接两个数组
import java.util.Arrays;
public class Concat {
public static void main(String[] args) {
int[] array1 = {1, 2, 3};
int[] array2 = {4, 5, 6};
int aLen = array1.length;
int bLen = array2.length;
int[] result = new int[aLen + bLen];
System.arraycopy(array1, 0, result, 0, aLen);
System.arraycopy(array2, 0, result, aLen, bLen);
System.out.println(Arrays.toString(result));
}
}
输出
[1, 2, 3, 4, 5, 6]
在上面的程序中,我们有两个整数数组 array1 和 array2。
为了合并(连接)两个数组,我们分别找到存储在其长度 aLen 和 bLen。然后,我们创建一个长度为 aLen + bLen 的新整数数组 result。
现在,为了合并两者,我们使用 arraycopy()
函数将两个数组的每个元素复制到 result 中。
arraycopy(array1, 0, result, 0, aLen)
函数简单来说就是告诉程序将 array1 从索引 0
开始复制到 result 中,从索引 0
到 aLen。
同样,对于 arraycopy(array2, 0, result, aLen, bLen)
,它告诉程序将 array2 从索引 0
开始复制到 result
中,从索引 aLen 到 bLen。
示例 2:不使用 arraycopy 连接两个数组
import java.util.Arrays;
public class Concat {
public static void main(String[] args) {
int[] array1 = {1, 2, 3};
int[] array2 = {4, 5, 6};
int length = array1.length + array2.length;
int[] result = new int[length];
int pos = 0;
for (int element : array1) {
result[pos] = element;
pos++;
}
for (int element : array2) {
result[pos] = element;
pos++;
}
System.out.println(Arrays.toString(result));
}
}
输出
[1, 2, 3, 4, 5, 6]
在上面的程序中,我们没有使用 arraycopy
,而是手动将 array1 和 array2 这两个数组的每个元素复制到 result 中。
我们存储 result 所需的总 length,即 array1.length + array2. length
。然后,我们创建一个长度为此的新数组 result。
现在,我们使用 for-each 循环遍历 array1 的每个元素并将其存储在 result 中。赋值后,我们将位置 pos 增加 1,即 pos++
。
同样,我们对 array2 执行相同的操作,并将每个元素存储在 result 中,从 array1 之后的那个位置开始。