原文: https://www.programiz.com/java-programming/examples/concatenate-two-arrays

在此程序中,您将学习使用arraycopy在没有 Java 的情况下连接两个数组。

示例 1:使用arraycopy连接两个数组

  1. import java.util.Arrays;
  2. public class Concat {
  3. public static void main(String[] args) {
  4. int[] array1 = {1, 2, 3};
  5. int[] array2 = {4, 5, 6};
  6. int aLen = array1.length;
  7. int bLen = array2.length;
  8. int[] result = new int[aLen + bLen];
  9. System.arraycopy(array1, 0, result, 0, aLen);
  10. System.arraycopy(array2, 0, result, aLen, bLen);
  11. System.out.println(Arrays.toString(result));
  12. }
  13. }

运行该程序时,输出为:

  1. [1, 2, 3, 4, 5, 6]

在上面的程序中,我们有两个整数数组array1array2

为了合并(连接)两个数组,我们发现其长度分别存储在aLenbLen中。 然后,我们创建一个长度为aLen + bLen的新整数数组结果。

现在,为了将两者结合起来,我们使用arraycopy()函数将两个数组中的每个元素都复制为结果。

简单来说,arraycopy(array1, 0, result, 0, aLen)函数告诉程序将array1从索引0开始复制到result从索引0复制到aLen

同样,对于arraycopy(array2, 0, result, aLen, bLen)告诉程序从索引0开始将array2从索引aLen复制到bLen


示例 2:在不使用arraycopy的情况下连接两个数组

  1. import java.util.Arrays;
  2. public class Concat {
  3. public static void main(String[] args) {
  4. int[] array1 = {1, 2, 3};
  5. int[] array2 = {4, 5, 6};
  6. int length = array1.length + array2.length;
  7. int[] result = new int[length];
  8. int pos = 0;
  9. for (int element : array1) {
  10. result[pos] = element;
  11. pos++;
  12. }
  13. for (int element : array2) {
  14. result[pos] = element;
  15. pos++;
  16. }
  17. System.out.println(Arrays.toString(result));
  18. }
  19. }

运行该程序时,输出为:

  1. [1, 2, 3, 4, 5, 6]

在上述程序中,我们不使用arraycopy,而是将两个数组array1array2的每个元素手动复制到result

我们存储result所需的length,即array1.length + array2.length。 然后,我们创建一个新的长度数组结果。

现在,我们使用for-each循环遍历array1的每个元素,并将其存储在result中。 分配后,我们将位置pos增加 1pos++

同样,我们对array2执行相同的操作,并将每个元素从array1之后的位置存储在result中。