ArrayList支持在指定索引插入元素,调用add(int index, E element),索引需满足0≤index≤size();插入时自动右移后续元素,时间复杂度O(n);允许null和重复元素;批量插入需循环或用subList(index, index).addAll()。

Java 中 ArrayList 支持在指定索引位置动态插入元素,使用的是 add(int index, E element) 方法。
插入前要确保索引合法
索引必须满足 0 ≤ index ≤ size()。允许在末尾插入(即 index == size()),这等价于 add(element);但不能超出范围,否则抛出 IndexOutOfBoundsException。
- 若想插到开头:用
list.add(0, "new") - 若想插到中间:比如原列表有 5 个元素,可在索引 2 处插入,新元素变成第 3 个
- 若想插到末尾:用
list.add(list.size(), "new")或更简洁的list.add("new")
插入会自动移动后续元素
ArrayList 是基于数组实现的,执行 add(index, e) 时,会将从 index 开始的所有元素向右平移一位,腾出位置。这个过程时间复杂度为 O(n),所以频繁在头部或中部插入会影响性能。
当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。
- 例如:
[A, B, C]执行add(1, "X")后变成[A, X, B, C] - 如果只是追加,优先用无参
add(),避免不必要的位移
支持插入 null 和重复元素
ArrayList 允许插入 null 值,也允许重复元素,插入逻辑不受影响。
立即学习“Java免费学习笔记(深入)”;
-
list.add(0, null)是合法的,插入后第一个元素为null - 已有元素是
"apple",仍可再插入一个"apple"到任意位置
批量插入多个元素需循环或借助工具类
标准 API 不提供“一次插入多个元素到某位置”的方法,如需批量插入,可手动循环或用 Collections 配合 addAll(但后者只能追加)。常见做法是倒序插入,避免索引偏移:
- 要在索引 2 处插入
["X", "Y", "Z"],可先插"Z"(位置 2),再插"Y"(位置 2),最后插"X"(位置 2) - 或者用
list.subList(index, index).addAll(Arrays.asList(...)),利用子列表的addAll实现原地插入

















