java.util 套件提供了豐富的資料結構實作,涵蓋陣列、鏈表、堆疊、佇列、集合、哈希表等。學習集合框架可分為五大塊:List 列表、Set 集合、Map 映射、迭代器(Iterator、Enumeration)、工具類(Arrays、Collections)。
集合類主要分為兩大派系:Collection 和 Map。
ArrayList、LinkedList、較少用的 Vector。LinkedList 同時實作 Queue 介面,可作佇列使用。hashCode 和 equals 保證)。常用實作:HashSet(基於 HashMap)、TreeSet(基於 TreeMap、實作 SortedSet、元素需實作 Comparable 或提供 Comparator)。Map 存儲鍵值對。AbstractMap 採用適配器模式實作大部分方法,TreeMap、HashMap、WeakHashMap 繼承之。早期的 Hashtable 直接實作 Map,與 Vector 同為 JDK 1.0 產物。
抽象類 AbstractCollection、AbstractList、AbstractSet、AbstractMap 分別實作對應介面,在抽象類中預先實作通用方法。具體實作類只需繼承抽象類並覆寫必要方法,避免重複實作所有介面方法,體現了適配器模式的精髓。
Collection(不可遍歷 Map)。所有 Collection 實作類提供 iterator() 方法。ListIterator 專門遍歷 List。Iterator 弱,僅用於 Hashtable、Vector、Stack。ArrayList、Vector 大量呼叫 Arrays.copyOf()。Collections 提供 synchronized 靜態方法回傳線程安全版本,但實務上優先選用 java.util.concurrent 套件下的並發集合。Java 集合框架透過清晰的介面層次、抽象類適配器模式、豐富的實作類,提供了極具擴展性的資料結構庫。深入理解其架構設計,有助於根據場景選擇最適合的集合類型。