arraylist在指定位置插入元素依靠add(int index, e element)方法,通过数组扩容与system.arraycopy()搬移元素实现,时间复杂度o(n),空间复杂度o(1)。

ArrayList 在指定位置插入元素,靠的是 add(int index, E element) 方法,底层通过数组复制完成位移。
插入原理:数组扩容与元素搬移
ArrayList 底层是 Object[] 数组。当调用 add(index, element) 时:
- 先检查索引是否合法(
index >= 0 && index ),越界抛 <code>IndexOutOfBoundsException - 判断当前数组容量是否足够,不够则触发扩容(通常是 1.5 倍)
- 用
System.arraycopy()将原数组中index及之后的元素整体后移一位 - 在空出的位置(即
index处)放入新元素,并将size加 1
代码示例:在索引 2 处插入字符串
假设已有列表 ["a", "b", "d", "e"],想在位置 2 插入 "c":
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
ArrayList<string> list = new ArrayList(Arrays.asList("a", "b", "d", "e"));
list.add(2, "c"); // 结果变为 ["a", "b", "c", "d", "e"]
</string>
注意:插入位置可以是 0(开头)、size(末尾,等价于普通 add),或中间任意合法下标。
时间与空间代价要留意
该操作平均时间复杂度是 O(n),因为最坏情况下(如插在开头)需移动全部 n 个元素;空间上只额外使用常数空间,但扩容时可能触发数组复制(O(n) 时间)。
如果频繁在头部或中间插入,应考虑 LinkedList;若仅追加,ArrayList 的尾插(O(1) 均摊)更高效。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










