Java 程序:连接两个数组

要理解此示例,您应了解以下Java编程主题


示例 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]

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

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

现在,为了合并两者,我们使用 arraycopy() 函数将两个数组的每个元素复制到 result 中。

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

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


示例 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,而是手动将 array1array2 这两个数组的每个元素复制到 result 中。

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

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

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

在结束之前,让我们通过以下挑战来测试您对 Java 程序连接两个数组的知识!您能解决以下挑战吗?

挑战

编写一个函数,将两个数组连接起来形成一个目标数组。

  • 给定两个数组 arr1arr2,将它们连接起来,并返回结果数组。
  • 例如,如果 arr1[] = {1, 2, 3}arr2[] = {4, 5, 6},则期望的输出为 {1, 2, 3, 4, 5, 6}
你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战