当前位置:首页 > 后端开发 > 正文

Java数组如何添加元素?

在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]

优化技巧

Java数组如何添加元素? 第1张

  • 批量添加时可结合循环,但频繁操作仍影响性能。


方法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]

优势

Java数组如何添加元素? 第2张

  • 底层实现,复制速度最快
  • 灵活控制复制位置(如中间插入元素)


方法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:

Java数组如何添加元素? 第3张

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 一行代码实现添加/插入

重要原则

  1. 数组长度不可变:所有“添加”操作本质是创建新数组。
  2. 优先选择集合类:99% 的场景下 ArrayList 比原始数组更合适。
  3. 性能权衡:小数据量无需优化,大数据量优先选 System.arraycopy() 或集合。

若必须使用数组,建议封装工具方法:

public static int[] addElement(int[] array, int element) { int[] newArray = Arrays.copyOf(array, array.length + 1); newArray[array.length] = element; return newArray; }


引用说明

0