Java中如何高效合并两个数组的方法探讨?
- 后端开发
- 2025-09-21
- 8
在Java中,合并两个数组有多种方法,具体取决于你的需求,以下是一些常见的方法:
使用Arrays.copyOf方法
Arrays.copyOf方法可以创建一个新的数组,包含原数组的所有元素,这种方法简单且易于理解。

使用System.arraycopy方法
System.arraycopy方法可以将源数组的一部分复制到目标数组,这种方法比Arrays.copyOf更灵活,因为你可以指定源数组和目标数组的起始索引。
public static int[] mergeArrays(int[] array1, int[] array2) { int[] mergedArray = new int[array1.length + array2.length]; System.arraycopy(array1, 0, mergedArray, 0, array1.length); System.arraycopy(array2, 0, mergedArray, array1.length, array2.length); return mergedArray; }
使用循环
你可以使用循环来手动合并两个数组。
public static int[] mergeArrays(int[] array1, int[] array2) { int[] mergedArray = new int[array1.length + array2.length]; for (int i = 0; i < array1.length; i++) { mergedArray[i] = array1[i]; } for (int i = 0; i < array2.length; i++) { mergedArray[array1.length + i] = array2[i]; } return mergedArray; }
使用Java 8的Stream API
如果你使用的是Java 8或更高版本,可以使用Stream API来合并两个数组。
import java.util.Arrays; import java.util.stream.Stream; public static int[] mergeArrays(int[] array1, int[] array2) { return Stream.concat(Arrays.stream(array1), Arrays.stream(array2)).mapToInt(i > i).toArray(); }
方法比较
以下是四种方法的比较:

| 方法 | 优点 | 缺点 |
|---|---|---|
| Arrays.copyOf | 简单,易于理解 | 无法指定源数组和目标数组的起始索引 |
| System.arraycopy | 灵活,可以指定源数组和目标数组的起始索引 | 需要手动计算目标数组的长度 |
| 循环 | 灵活,无需依赖外部库 | 代码较为繁琐 |
| Stream API | 简洁,易于理解 | 需要Java 8或更高版本 |
FAQs
Q1:如果两个数组的长度不同,如何合并它们?
A1:无论两个数组的长度如何,上述方法都可以正常工作,如果第二个数组的长度大于第一个数组,那么System.arraycopy和循环方法将自动填充额外的元素,如果第二个数组的长度小于第一个数组,则Arrays.copyOf和Stream API将返回一个包含所有元素的新数组。
Q2:如果两个数组包含相同的数据类型,如何合并它们?
A2:上述方法都适用于合并包含相同数据类型的数组,你可以合并两个整数数组、浮点数数组或字符串数组,只需确保在调用合并方法时传递正确的数组类型即可。
