Java 集合:ArrayList 动态数组与复杂度

一、底层结构

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(实际很少)。