Java 集合框架全景圖:Collection、List、Set、Queue、Deque 核心 API 與實現類對比
本文系統梳理 JDK 集合框架體系,涵蓋介面繼承關係、核心方法分類、主流實現類特性與線程安全包裝器,適合面試複習與日常查閱。
體系繼承圖
Iterable
└─ Collection
├─ List → ArrayList, LinkedList, Vector, Stack
├─ Set → HashSet, LinkedHashSet, TreeSet, EnumSet
└─ Queue → PriorityQueue, ArrayDeque, LinkedList
└─ Deque → ArrayDeque, LinkedBlockingDeque
└─ BlockingQueue → ArrayBlockingQueue, LinkedBlockingQueue, PriorityBlockingQueue, DelayQueue, SynchronousQueue, LinkedTransferQueue
Collection 核心方法
| 分類 | 方法 |
| 增 | add(E), addAll(Collection extends E>) |
| 刪 | remove(Object), removeAll(Collection>), retainAll(Collection>), removeIf(Predicate), clear() |
| 查 | contains(Object), containsAll(Collection>), size(), isEmpty(), toArray(), Collections.max/min |
| 工具 | iterator(), spliterator(), stream(), parallelStream(), Collections.unmodifiable/synchronized 包裝器 |
List 介面額外方法
- 位置操作:
add(index, E), remove(index), set(index, E), get(index), indexOf/lastIndexOf, subList(from, to)
- 排序/交換:
sort(Comparator), replaceAll(UnaryOperator), Collections.swap(list, i, j)
- 迭代器:
listIterator() 支援雙向游標與增刪改。
主要實現類特性對比
| 類 | 底層結構 | 線程安全 | 特點 |
| ArrayList | 動態數組 | 否 | 隨機訪問快,擴容 1.5 倍,適合讀多寫少 |
| LinkedList | 雙向鏈表 | 否 | 首尾增刪 O(1),實現 Deque/Queue,適合頻繁增刪 |
| Vector | 動態數組 | 是 | 同步方法,擴容 2 倍,性能較差,已被 Collections.synchronizedList 替代 |
| Stack | 繼承 Vector | 是 | LIFO,push/pop/peek,不建議新代碼使用,改用 ArrayDeque |
Queue/Deque/BlockingQueue 體系
- Queue:FIFO,
offer/poll/peek 不拋異常,add/remove/element 拋異常。
- Deque:雙端隊列,支援棧操作
push/pop/peek,addFirst/Last、offerFirst/Last、pollFirst/Last。
- BlockingQueue:生產者-消費者模式,
put/take 阻塞,offer/poll(timeout) 超時。實現:
ArrayBlockingQueue(有界數組)、LinkedBlockingQueue(有界鏈表)、PriorityBlockingQueue(優先級)、DelayQueue(延遲)、SynchronousQueue(直接移交)、LinkedTransferQueue(TransferQueue)。
Set 介面與實現
| 類 | 底層 | 有序性 | 線程安全 | 適用場景 |
| HashSet | HashMap | 無序 | 否 | 高性能去重 |
| LinkedHashSet | LinkedHashMap | 插入序 | 否 | 保留插入順序 |
| TreeSet | 紅黑樹 | 自然序/Comparator | 否 | 有序去重、區間查詢 |
| EnumSet | 位向量 | 枚舉聲明序 | 否 | 枚舉類型專用,極致性能 |
線程安全包裝器
Collections.synchronizedList(list)
Collections.synchronizedSet(set)
Collections.synchronizedMap(map)
Collections.unmodifiableList(list) // 只讀視圖
高併發場景建議使用 java.util.concurrent 並發集合(ConcurrentHashMap, CopyOnWriteArrayList 等)。
工具類
Collections.sort/binarySearch/reverse/shuffle/fill
Arrays.asList/toArray/stream
- Java 8+ Stream API:
collection.stream().filter().map().collect()
- 上一篇文章: Hibernate 級聯操作與延遲加載深度解析:cascade、inverse、lazy、fetch 策略
- 下一篇文章: Cookie 自動登錄原理實戰:以博客園為例實現「記住我」功能
Copyright ©
程式碼之家 All Rights Reserved