Java 集合框架提供了一套管理對象集合的統一接口與類,包含介面、實現類與演算法。它位於 java.util 套件中,是 Java 開發中處理資料結構的核心基礎設施。
Collection 是最基礎的集合介面,代表一組 Object(元素)。它不直接提供實作類,而是透過子介面 List 和 Set 來定義具體行為。所有實作 Collection 的類別必須提供兩個標準建構子:無參數建構子建立空集合,以及接受另一個 Collection 參數的建構子用於複製元素。
無論具體實作為何,所有 Collection 都支援 iterator() 方法,回傳一個 Iterator 物件,使我們能逐一存取元素:
Iterator it = collection.iterator();
while (it.hasNext()) {
Object obj = it.next();
// 處理 obj
}
List 繼承自 Collection,保持元素插入順序,允許重複元素,並支援索引存取(類似陣列)。常用實作類有 ArrayList、LinkedList、Vector 和 Stack。List 還提供 listIterator() 回傳 ListIterator,支援雙向遍歷與元素修改。
null 元素。size、isEmpty、get、set 為常數時間;add 為攤還常數時間。ensureCapacity 預先擴容提升大量插入效能。null,提供首尾操作方法,可作為堆疊、佇列或雙端佇列使用。Collections.synchronizedList)。ConcurrentModificationException。push、pop、peek、empty、search 等堆疊操作。Set 不允許重複元素(以 equals() 判斷),最多包含一個 null。建構子要求傳入的 Collection 不含重複元素。需注意可變物件若在放入後修改導致 equals 回傳 true,會破壞 Set 不變性。
Map 不繼承 Collection,提供 Key 到 Value 的映射,Key 唯一。提供三種視圖:Key 集合、Value 集合、Key-Value 對集合。
null;put/get 為常數時間。initialCapacity 和 loadFactor (預設 0.75) 調整效能。hashCode() 和 equals(),否則會導致查找失敗。null Key 和 Value;非同步,效能優於 Hashtable。LinkedList。ArrayList。Collections.synchronizedXxx 包裝。equals() 和 hashCode()。List、Set、Map 而非具體實作類,便於日後替換實作。