Collection 與 Map 兩大根介面下的完整繼承/實現關係圖,含 JDK 8 標準實現類。
Collection
├── List (有序、可重複)
│ ├── ArrayList (動態陣列、隨機存取快)
│ ├── LinkedList (雙向鏈表、首尾增刪快、實作 Deque)
│ ├── Vector (同步、舊版遺留)
│ └── Stack (Vector 子類、後進先出、不建議使用、改用 ArrayDeque)
└── Set (無序、不可重複)
├── HashSet (HashMap 底層、O(1) 查找)
├── LinkedHashSet (維護插入順序、雙向鏈表 + HashMap)
└── TreeSet (紅黑樹、有序、O(log n)、實作 NavigableSet)
Queue (佇列)
└── Deque (雙端佇列)
├── ArrayDeque (循環陣列、高效能、非同步、首選實現)
├── LinkedList (同時實作 List + Deque)
└── PriorityQueue (堆、優先級排序)
Map ├── HashMap (雜湊表、非同步、允許 null key/value) ├── LinkedHashMap (維護插入/存取順序、雙向鏈表) ├── Hashtable (同步、不允許 null、舊版遺留) ├── Properties (Hashtable 子類、鍵值皆 String、配置檔專用) ├── TreeMap (紅黑樹、鍵有序、實作 NavigableMap) └── ConcurrentHashMap (分段鎖/CAS、高併發、JDK8+ 推薦)
| 介面 | 核心方法 | 特徵 |
|---|---|---|
| Collection | add, remove, contains, size, isEmpty, iterator, toArray | 單列集合根介面 |
| List | get, set, add(index, e), remove(index), indexOf, subList | 索引存取、可重複 |
| Set | (繼承 Collection) 無額外方法 | 唯一性、equals/hashCode 判斷 |
| Queue | offer, poll, peek, element | FIFO、雙端擴展見 Deque |
| Map | put, get, remove, containsKey, keySet, values, entrySet | 鍵值對、鍵唯一 |