引言
在 Java 的世界里,集合框架支撑着数据处理的核心逻辑。无论是电商系统、社交网络还是大数据平台,Java 集合都扮演着不可或缺的角色。 面对 ArrayList、LinkedList、HashMap、ConcurrentHashMap 等众多选择,如何根据场景做出正确决策? 本文将带你深入 Java 集合的核心世界,系统梳理 List、Set、Map、Queue 四大体系,揭示 HashMap 的扩容机制、ArrayList 的动态增长原理,对比不同场景下的性能表现,并探索多线程环境下的最佳实践。
集合框架体系
Collection (接口)
├── List (有序、可重复)
│ ├── ArrayList
│ ├── LinkedList
│ ├── Vector
│ └── Stack
├── Set (无序、唯一)
│ ├── HashSet
│ ├── LinkedHashSet
│ └── TreeSet
└── Queue (队列)
├── PriorityQueue
├── ArrayDeque
└── LinkedList
Map (接口)
├── HashMap
├── LinkedHashMap
├── TreeMap
├── Hashtable
└── ConcurrentHashMap
List 接口实现
ArrayList
特点:基于动态数组,随机访问快,增删慢。非线程安全。默认初始容量 10,按 1.5 倍扩容。
List<String> list = new ArrayList<>();
list.add("Java");
list.get(0); // O(1)
LinkedList
特点:基于双向链表,增删快,随机访问慢。适用于频繁插入删除的场景。
List<String> list = new LinkedList<>();
list.add("First");
list.addLast("Last"); // 特有方法
Vector
特点:线程安全的 ArrayList(使用 synchronized)。性能较慢,已逐渐被淘汰。默认 2 倍扩容。
import java.util.Vector;
public class VectorExample {
public static void main(String[] args) {
Vector<String> vector = new Vector<>();
vector.add("Java");
System.out.println(vector);
}
}
CopyOnWriteArrayList
CopyOnWriteArrayList 是 Java 并发包中的线程安全 List 实现。采用'写时复制'策略。
- 读操作完全无锁。
- 弱一致性迭代器:基于创建时的数组快照。


