上一篇                     
               
			  Java数组如何添加元素?
- 后端开发
- 2025-07-02
- 4537
 在Java中,数组长度固定,无法直接添加元素,常用两种方法:,1. **创建新数组**:复制原数组并增加新元素,使用
 
 
Arrays.copyOf()或
 System.arraycopy()。,2. **使用ArrayList**:转为
 ArrayList,用
 add()方法添加元素,再转回数组(推荐动态操作)。
方法1:创建新数组并手动复制(基础方法)
适用于少量添加或初学者理解原理。
// 原始数组
int[] original = {1, 2, 3};
int newElement = 4;
// 创建新数组(长度+1)
int[] newArray = new int[original.length + 1];
// 复制旧数组数据
for (int i = 0; i < original.length; i++) {
    newArray[i] = original[i];
}
// 加入新元素
newArray[newArray.length - 1] = newElement;
// 结果:newArray = [1, 2, 3, 4] 
优缺点:
- 简单直观,无需额外类库
- 效率低(大量数据时需手动管理复制)
方法2:使用 Arrays.copyOf()(推荐)
 
利用Java标准库简化复制过程,适合单次添加。
import java.util.Arrays;
int[] original = {1, 2, 3};
int newElement = 4;
// 扩展数组长度并复制
int[] newArray = Arrays.copyOf(original, original.length + 1);
newArray[newArray.length - 1] = newElement; // 加入新元素
// 结果:newArray = [1, 2, 3, 4] 
优化技巧:
- 批量添加时可结合循环,但频繁操作仍影响性能。
方法3:使用 System.arraycopy()(高性能)
 
适用于对性能敏感的场景(如大数据量)。

int[] original = {1, 2, 3};
int newElement = 4;
int[] newArray = new int[original.length + 1];
// 参数说明:(源数组, 源起始位置, 目标数组, 目标起始位置, 复制长度)
System.arraycopy(original, 0, newArray, 0, original.length);
newArray[original.length] = newElement; // 加入新元素
// 结果:newArray = [1, 2, 3, 4] 
优势:
- 底层实现,复制速度最快
- 灵活控制复制位置(如中间插入元素)
方法4:通过 ArrayList 动态添加(最佳实践)
 
强烈推荐频繁添加元素的场景。ArrayList 自动扩容,操作更安全高效。
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
// 将数组转为ArrayList
Integer[] array = {1, 2, 3}; // 需使用包装类型
List<Integer> list = new ArrayList<>(Arrays.asList(array));
// 动态添加元素
list.add(4); // 末尾添加
list.add(0, 0); // 索引0插入新元素
// 转回数组(若需要)
Integer[] newArray = list.toArray(new Integer[0]);
// 结果:newArray = [0, 1, 2, 3, 4] 
关键优势:

- 自动处理扩容,无需手动计算长度
-  支持任意位置插入(list.add(index, element))
- ️ 避免数组越界风险
注意:基本类型(如
int)需用包装类(Integer),或使用第三方库(如Apache Commons Lang)。
方法5:第三方库(简化代码)
Apache Commons Lang 提供工具类 ArrayUtils:
import org.apache.commons.lang3.ArrayUtils;
int[] original = {1, 2, 3};
int[] newArray = ArrayUtils.add(original, 4); // 末尾添加
// 结果:newArray = [1, 2, 3, 4]
// 指定位置插入
int[] insertedArray = ArrayUtils.insert(2, original, 99); 
// 结果:[1, 2, 99, 3](在索引2插入99) 
适用场景:

- 需快速实现添加/插入,且项目已引入该库。
总结与建议
| 场景 | 推荐方法 | 原因 | 
|---|---|---|
| 单次添加 | Arrays.copyOf() | 代码简洁,标准库支持 | 
| 高性能需求 | System.arraycopy() | 底层优化,速度最快 | 
| 频繁动态操作 | ArrayList | 自动扩容,安全灵活 | 
| 简化开发(项目允许) | ArrayUtils | 一行代码实现添加/插入 | 
重要原则:
- 数组长度不可变:所有“添加”操作本质是创建新数组。
- 优先选择集合类:99% 的场景下 ArrayList比原始数组更合适。
- 性能权衡:小数据量无需优化,大数据量优先选 System.arraycopy()或集合。
若必须使用数组,建议封装工具方法:
public static int[] addElement(int[] array, int element) { int[] newArray = Arrays.copyOf(array, array.length + 1); newArray[array.length] = element; return newArray; }
引用说明:
- Oracle官方文档:Arrays (Java SE 17)
- Apache Commons Lang:ArrayUtils
- Java集合框架指南:ArrayList (Java SE 17)
 
  
			 
			 
			 
			 
			 
			 
			 
			