add(e e)在末尾追加元素,返回true且自动扩容;add(int index, e e)在指定位置插入,导致后续元素后移,index范围为0≤index≤size,越界抛indexoutofboundsexception。

ArrayList 添加元素用 add() 方法,插入元素也用 add(index, element),区别在于是否指定位置。
添加元素(追加到末尾)
调用 add(E e) 即可把元素加在列表末尾,这是最常用的方式:
- 自动扩容:容量不够时会自动扩容(通常是原容量的 1.5 倍)
- 时间复杂度:平均 O(1),扩容时为 O(n)
- 示例:list.add("hello") → 加在最后
插入元素(指定位置)
调用 add(int index, E element) 可将元素插入到指定下标处(0 ≤ index ≤ size):
- 原位置及之后的元素会整体后移一位
- 时间复杂度:O(n),因为涉及数组复制移动
- 注意:index 等于 size 时等同于 add(E);index 超出范围( size)会抛 IndexOutOfBoundsException
- 示例:list.add(2, "world") → 插入到索引 2 的位置(原索引 2 的元素变成索引 3)
其他常用添加方式
除了单个元素,还可以批量添加:
- addAll(Collection extends E> c):追加整个集合
- addAll(int index, Collection extends E> c):从指定位置开始插入整个集合
- 两者都返回 boolean,成功添加至少一个元素时返回 true
小提醒
插入操作不是线程安全的,多线程环境下需手动同步;若频繁在头部或中间插入,考虑改用 LinkedList。











