Java 集合框架
Java 集合框架图 ⭐

关键特性
| 特性 | ArrayList |
LinkedList |
HashSet |
TreeSet |
HashMap |
TreeMap |
|---|---|---|---|---|---|---|
| 底层结构 | 动态数组 | 双向链表 | 哈希桶 | 红黑树 | 哈希桶 | 红黑树 |
| 是否有序 | 插入顺序 | 插入顺序 | 无序 | 自然/比较器顺序 | 无序 | key有序 |
| 是否允许null | 允许 | 允许 | 一个null | 不允许(null会NPE) | key/value均允许 | key不允许null |
| 主要时间复杂度 | get/set O(1) add/remove O(n) | get O(n) add/remove O(1) | 增删查 O(1) | 增删查 O(log n) | 增删查 O(1) | 增删查 O(log n) |
| 线程安全 | 否 | 否 | 否 | 否 | 否 | 否 |
注:需要线程安全时,使用
Collections.synchronizedXXX或java.util.concurrent包下的类(如ConcurrentHashMap)。
记忆口诀
List 有序可重复,Array 快查 Link 快改
Set 唯一不重复,Hash 快查 Tree 有序
Map 存键值对,Hash 无序 Tree 有序
队列 Queue 和 Deque,ArrayDeque 是首选
并发场景找 JUC,Concurrent 效率高