掌握 Java 核心的資料結構和集合框架非常重要。今天,我們將深入探討Collection 框架,特別聚焦於 Stack 和 Queue 這兩種經典的資料結構。無論是在日常開發中處理資料,還是在面試中應對算法題,理解並靈活運用這些資料結構都能讓我們事半功倍。本文將為您揭開 Collection、Stack 和 Queue 的神秘面紗。
通過本文,您將能夠:
Collection
是 Java 集合框架中的一個核心介面,它定義了一組操作集合物件的標準方法。然而,Collection
介面本身並不直接實例化,而是透過其子介面和實現類來操作不同類型的集合。Collection
是 List
、Set
和 Queue
這些子介面的父介面。List
:一個有序的集合,允許重複的元素。典型實現包括 ArrayList
和 LinkedList
。Set
:一個不允許重複元素的集合。典型實現包括 HashSet
和 TreeSet
。Queue
:通常以 FIFO(先進先出)的順序來處理元素,但具體行為取決於具體實現類別。常見的實現包括 LinkedList
和 PriorityQueue
。add(E e)
:添加元素remove(Object o)
:移除元素size()
:返回集合大小isEmpty()
:檢查集合是否為空contains(Object o)
:檢查是否包含某元素clear()
: 清空集合iterator()
:返回迭代器ArrayList
:基於動態陣列的實現,允許隨機訪問元素。它在讀取操作上效率較高,但在中間插入或刪除元素時效率較低。LinkedList
:基於雙向鏈結的實現,對於頻繁的插入和刪除操作有較好的性能。HashSet
:基於哈希表的實現,不保證元素的順序,並且不允許重複的元素。TreeSet
:基於紅黑樹的有序集合,元素以自然順序或自定義的比較器順序儲存。不允許重複元素。Map
介面(如 HashMap
和 TreeMap
)儘管不屬於 Collection
介面的子介面,但它也是 Java 集合框架的重要組成部分,負責儲存鍵值對。import java.util.Stack;
Stack<Integer> stk = new Stack<Integer>();
stk.push(0);
// 將元素推入堆疊
stk.pop();
// 移除並返回堆疊頂部元素
stk.peek();
// 返回堆疊頂部元素,但不移除
stk.empty();
// 堆疊為空返回 true,否則返回 false
stk.contains(Object o);
// 檢查堆疊是否包含指定元素
stk.get(int index);
// 獲取指定索引處的元素
stk.set(int index, Object o);
// 替換指定索引處的元素
stk.size();
// 返回堆疊中的元素數量
Java 中的 LinkedList 實作了 Queue 介面
import java.util.LinkedList;
import java.util.Queue;
Queue<String> queue = new LinkedList<String>();
queue.offer("a");
// 添加元素
queue.poll();
// 從隊列頭部取出並移除元素。如果隊列為空,則返回 null
queue.peek();
// 從隊列頭部取出但不移除元素。如果隊列為空,則返回 null
queue.isEmpty();
// 如果隊列為空則返回 true,否則返回 false
queue.contains(Object o);
// 檢查隊列是否包含指定元素
queue.size();
// 返回隊列中的元素數量