如何在Java中合并两个数组:5种方法 + 代码示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

「拼接」Java数组:5种经过验证的方法(含代码)

你好,同行!如果你正在阅读这篇文章,说明你遇到了每个Java开发者迟早都会面临的任务——如何在Java中合并两个数组?看起来很简单?直接加起来就行。但事实并非如此。Java没有像Python或JavaScript那样的原生数组连接运算符。于是,有趣的部分开始了。

在Stack Overflow上,问题「How can I concatenate two arrays in Java?」已经积累了数十万次浏览。这意味着即使是经验丰富的开发者有时也会在选择上感到困惑。在本教程中,我将向你展示5种可行的方法——从「老派」的手动复制到现代的Stream API。你将了解每种方法的优缺点,并能够选择最适合你任务的那一种。

我们开始吧!



为什么Java没有简单的数组合并方法?

Java中的数组是固定长度的对象。你不能简单地将一个数组「追加」到另一个数组的末尾。你需要创建一个新数组并将元素复制进去。但别担心——我会展示如何优雅且无痛地完成这件事。



方法1:手动复制(适合喜欢完全控制的人)

最直观、最清晰的方法。创建一个新数组,其长度等于两个原始数组长度之和,然后通过循环填充它。

public class ArrayConcatManual {    public static void main(String[] args) {        int[] array1 = {1, 2, 3};        int[] array2 = {4, 5, 6};

int[] result = new int[array1.length + array2.length];

// 复制第一个数组 for (int i = 0; i < array1.length; i++) { result[i] = array1[i]; }

// 复制第二个数组 for (int i = 0; i < array2.length; i++) { result[array1.length + i] = array2[i]; }

// 输出结果 for (int num : result) { System.out.print(num + " "); } // 输出:1 2 3 4 5 6 }}

优点:完全控制,无需第三方库,易于阅读。

缺点:代码冗长,容易在索引上出错(特别是当数组超过两个时)。

建议:如果你想了解一切「底层」是如何工作的,或者你正在为教学目的编写代码,请使用此方法。



方法2:System.arraycopy() —— 标准工具

Java有一个内置方法System.arraycopy()。它比手动循环更快,因为它使用了本地方法(native method)。这是生产环境推荐的方法。

import java.util.Arrays;

public class ArrayConcatSystem { public static void main(String[] args) { String[] fruits1 = {"apple", "banana"}; String[] fruits2 = {"cherry", "date"};

String[] result = new String[fruits1.length + fruits2.length];

System.arraycopy(fruits1, 0, result, 0, fruits1.length); System.arraycopy(fruits2, 0, result, fruits1.length, fruits2.length);

System.out.println(Arrays.toString(result)); // 输出:[apple, banana, cherry, date] }}

工作原理:

  • 第一个参数——源数组。
  • 第二个参数——源数组中的起始位置(通常为0)。
  • 第三个参数——目标数组。
  • 第四个参数——目标数组中的起始位置。
  • 第五个参数——要复制的元素数量。

优点:快速、简洁、标准库。

缺点:需要留意索引,可能抛出ArrayIndexOutOfBoundsException。



方法3:ArrayList和集合 —— 灵活与便利

如果你不仅需要合并数组,还需要后续对它们进行操作(添加、删除

博客

书籍推荐