Java 集合框架位於 java.util 套件,提供一套統一的架構來儲存與操作物件群組。它主要包含三大核心部分:
Collection (介面)
├── List (有序、可重複)
│ ├── ArrayList (動態陣列)
│ ├── LinkedList (雙向鏈表)
│ └── Vector (同步,已過時)
├── Set (無序、唯一)
│ ├── HashSet (哈希表)
│ ├── LinkedHashSet (保持插入順序)
│ └── TreeSet (紅黑樹,有序)
└── Queue (佇列)
├── PriorityQueue (優先佇列)
└── ArrayDeque (雙端佇列)
Map (介面,鍵值對)
├── HashMap (哈希表)
├── LinkedHashMap (保持插入/存取順序)
├── TreeMap (紅黑樹,鍵有序)
├── Hashtable (同步,已過時)
└── ConcurrentHashMap (高併發)
Object[] elementData,預設容量 10,擴容 1.5 倍// ArrayList 範例
List<Penguin> penguins = new ArrayList<>();
penguins.add(new Penguin("楠楠", "Q仔"));
penguins.add(new Penguin("花花", "Q妹"));
// 遍歷方式
for (Penguin p : penguins) { ... } // for-each (推薦)
penguins.forEach(p -> ...); // Lambda
Iterator<Penguin> it = penguins.iterator(); // 迭代器 (需刪除時)
while (it.hasNext()) { Penguin p = it.next(); ... }
// LinkedList 特有方法
LinkedList<Penguin> list = new LinkedList<>();
list.addFirst(new Penguin("首領", "Boss"));
list.addLast(new Penguin("小弟", "Minion"));
Penguin first = list.getFirst();
Penguin last = list.getLast();
list.removeFirst();
list.removeLast();
Map<String, String> petMap = new HashMap<>();
petMap.put("嘻嘻", "狗狗");
petMap.put("哈哈", "企鵝");
// 查詢
String pet = petMap.get("嘻嘻"); // 狗狗
boolean exists = petMap.containsKey("呵呵"); // false
// 遍歷 (推薦 entrySet)
for (Map.Entry<String, String> entry : petMap.entrySet()) {
System.out.println(entry.getKey() + " -> " + entry.getValue());
}
// Java 8+ forEach
petMap.forEach((k, v) -> System.out.println(k + " -> " + v));
| 操作 | ArrayList | LinkedList | HashMap | TreeMap |
|---|---|---|---|---|
| 隨機存取 | O(1) ★ | O(n) | O(1) | O(log n) |
| 頭部插入/刪除 | O(n) | O(1) ★ | - | - |
| 尾部插入/刪除 | O(1) ★ | O(1) ★ | - | - |
| 搜尋 | O(n) | O(n) | O(1) ★ | O(log n) |
| 有序遍歷 | - | - | - | O(n) ★ |
List<T> list = new ArrayList<>()new ArrayList<>(expectedSize)Collections.unmodifiableList 返回唯讀視圖保護封裝性Collections.synchronizedList 或並發集合remove() 方法equals/hashCode