集合框架為操作物件群組提供統一架構,設計目標:高效能、高互通性、易擴展。核心包含介面(抽象資料型別)、實作類別(可重用資料結構)、演算法(搜尋、排序等多型方法)。

位於 java.util 套件,使用時需匯入。
| 介面 | 描述 |
|---|---|
Collection | 最基本集合介面,代表一組 Object;無直接實作類,只有子介面(List、Set) |
List | 有序 Collection,可精確控制插入位置、索引存取、允許重複 |
Set | 不保存重複元素,行為異於 Collection |
SortedSet | 繼承 Set,保持有序 |
Map | 鍵值對映射,鍵唯一 |
Map.Entry | Map 內部類,描述單一鍵值對 |
SortedMap | 繼承 Map,鍵保持升序 |
Enumeration | 傳統介面,已被 Iterator 取代 |
HashSet、TreeSet)ArrayList、LinkedList、Vector)| 類別 | 描述 |
|---|---|
AbstractCollection | 實作大部分 Collection 介面 |
AbstractList | 繼承 AbstractCollection,實作大部分 List |
LinkedList | 實作 List,允許 null,鏈表結構,非同步,查找慢 |
ArrayList | 實作 List,可變大小陣列,隨機存取快,非同步,增長 50% |
AbstractSet | 實作大部分 Set |
HashSet | 實作 Set,不重複、無序、允許一個 null |
LinkedHashSet | 可預測迭代順序的 Set |
TreeSet | 實作 Set,可排序 |
AbstractMap | 實作大部分 Map |
HashMap | 雜湊表,鍵值對,依 HashCode 存取快,最多一個 null 鍵,非同步 |
TreeMap | 紅黑樹實作,鍵有序 |
WeakHashMap | 弱鍵雜湊表 |
LinkedHashMap | 繼承 HashMap,保持插入順序 |
IdentityHashMap | 參考相等比較 |
傳統類別(Vector、Stack、Dictionary、Hashtable、Properties、BitSet)亦在 java.util 中。
定義為集合類別的靜態方法(排序、搜尋等),具有多型特性。不可修改集合拋出 UnsupportedOperationException,型別不相容拋出 ClassCastException。三個不可變靜態常數:EMPTY_SET、EMPTY_LIST、EMPTY_MAP。
List<String> list = new ArrayList<>();
list.add("Hello"); list.add("World"); list.add("HAHAHAHA");
// 1. foreach(推薦)
for (String str : list) System.out.println(str);
// 2. 轉陣列遍歷
String[] arr = list.toArray(new String[0]);
for (String s : arr) System.out.println(s);
// 3. Iterator(安全移除元素時使用)
Iterator<String> it = list.iterator();
while (it.hasNext()) System.out.println(it.next());
Map<String,String> map = new HashMap<>();
map.put("1","value1"); map.put("2","value2"); map.put("3","value3");
// 1. keySet + get(兩次查找)
for (String k : map.keySet()) System.out.println(k + "=" + map.get(k));
// 2. entrySet + Iterator
Iterator<Map.Entry<String,String>> it = map.entrySet().iterator();
while (it.hasNext()) { Entry e = it.next(); System.out.println(e.getKey()+"="+e.getValue()); }
// 3. entrySet + foreach(推薦,大容量高效)
for (Entry<String,String> e : map.entrySet()) System.out.println(e.getKey()+"="+e.getValue());
// 4. values() 僅遍歷值
for (String v : map.values()) System.out.println(v);
TreeSet、TreeMap 依比較器排序。實作 Comparator 介面可自訂排序邏輯。
Object 型別,取出需強制轉型java.util 套件