一、底层结构
ArrayList 基于动态数组,容量不足时扩容为 1.5 倍并拷贝。默认初始容量 10(JDK 8 延迟到首次添加才分配)。
二、常用操作
List<String> list = new ArrayList<>();
list.add("a"); list.get(0); list.remove(0);
list.contains("a"); list.size();
三、复杂度与选型
| 操作 | ArrayList | LinkedList |
|---|---|---|
| 随机访问 get(i) | O(1) | O(n) |
| 尾部 add | O(1) 均摊 | O(1) |
| 中间插入/删除 | O(n) 搬移 | O(n) 找节点 |
绝大多数场景用 ArrayList;只有在频繁头插/头删时才考虑 LinkedList(实际很少)。