掌握 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(); // 返回隊列中的元素數量