抽象資料型別(ADT)將資料結構的操作介面與實現分離。Java Collections Framework 提供完整的線性表、堆疊、佇列實現。
| 特性 | ArrayList | LinkedList |
|---|---|---|
| 底層結構 | 動態陣列 | 雙向鏈表 |
| 隨機存取 | O(1) | O(n) |
| 頭尾增刪 | O(n) | O(1) |
| 記憶體開銷 | 低 | 高(節點物件) |
// 堆疊 (LIFO)
Deque stack = new ArrayDeque<>();
stack.push(1); int top = stack.pop();
// 佇列 (FIFO)
Queue queue = new LinkedList<>();
queue.offer("a"); String head = queue.poll(); 不建議繼承 `Stack` 或 `Vector`(已過時、同步化開銷大)。`ArrayDeque` 同時支援雙端操作,效能優於 `LinkedList`。
介面不變、實現可換。業務邏輯依賴 `List` 介面而非具體類別,日後可從 `ArrayList` 平滑遷移至 `LinkedList` 或自訂實現,無須修改呼叫端代碼。