Java 集合框架的核心介面形成兩條獨立的繼承體系:以 Collection 為根的集合體系,以及以 Map 為根的鍵值對體系。理解這些介面的層級關係與設計意圖,是高效使用集合框架的基礎。
Set、List、Queue、Deque 定義具體行為。HashSet、LinkedHashSet、TreeSet。ArrayList、LinkedList。PriorityQueue)依比較器或自然順序排序。ArrayDeque 為常用實作。HashMap、LinkedHashMap、TreeMap、Hashtable。所有核心介面皆為泛型,例如 public interface Collection<E>。宣告時指定元素類型(如 Collection<String>),編譯器可在編譯期檢查類型正確性,減少執行期錯誤。
為避免介面爆炸,修改操作(如 add、remove、clear)被設計為選用操作。特定實作可選擇不支援某些操作,若呼叫不支援的操作會拋出 UnsupportedOperationException。Java 平台通用實作(如 ArrayList、HashMap)均支援所有選用操作。
| 需求 | 推薦介面 | 典型實作 |
|---|---|---|
| 不重複、無序 | Set | HashSet |
| 不重複、有序 | SortedSet | TreeSet |
| 有序、可重複、索引存取 | List | ArrayList |
| FIFO 隊列 | Queue | LinkedList, ArrayDeque |
| 雙端操作、堆疊/隊列 | Deque | ArrayDeque |
| 鍵值對映射 | Map | HashMap |
| 有序鍵值對 | SortedMap | TreeMap |
SortedSet 與 SortedMap 依賴元素的自然順序(實作 Comparable)或外部比較器(Comparator)維持順序。詳細機制請參考「物件排序」章節。