Java Stack 類別:初學者指南
介紹
你好,未來的 Java 開發者!今天,我們將深入探討 Java Stack 類別的迷人世界。如果你以前從未寫過一行代碼,也別擔心 —— 我將成為你在這次刺激的旅程中的友好指南。
想象一下你在整理書籍。你把它們疊起來,一個疊在另一個上面。你最後放在疊上的書是你需要時第一本會拿起的書。這就是 Java 中 Stack 的工作原理!它是一個“後進先出”(LIFO)的數據結構,在編程中非常有用。
類別聲明
讓我們從基礎開始。在 Java 中,Stack 類別是 java.util 包的一部分。要使用它,你需要像這樣導入:
import java.util.Stack;
Stack 類別擴展了 Vector 類別,並實現了 List、Collection、Iterable、Cloneable 和 Serializable 等接口。如果這些術語現在對你來說像外星語也不要擔心 —— 我們會講到這些!
類別構造器
Stack 類別只有一個構造器:
Stack<E> stack = new Stack<E>();
在這裡,'E' 是你希望在堆疊中存儲的元素類型的佔位符。它可以是 Integer、String 或任何其他對象類型。例如:
Stack<Integer> numberStack = new Stack<Integer>();
Stack<String> bookStack = new Stack<String>();
在第一行中,我們創建了一個將保存整數的堆疊。在第二行中,我們為字符串創建了一個堆疊 —— 這對我們的書堆比喻來說非常完美!
類別方法
現在,讓我們看看 Stack 類別的主要方法。我會將它們放在一個表格中以便於參考:
方法 | 描述 |
---|---|
push(E item) | 將項目添加到堆疊的頂部 |
pop() | 從堆疊的頂部移除並返回項目 |
peek() | 返回頂部的項目但不移除它 |
empty() | 檢查堆疊是否為空 |
search(Object o) | 搜索對象並返回其位置 |
讓我們通過一些例子來分解這些方法:
push(E item)
Stack<String> bookStack = new Stack<String>();
bookStack.push("Java for Beginners");
bookStack.push("Data Structures in Java");
在這裡,我們正在向堆疊中添加書籍。"Data Structures in Java" 現在在 "Java for Beginners" 的頂部。
pop()
String topBook = bookStack.pop();
System.out.println("Removed book: " + topBook);
這會從堆疊的頂部移除 "Data Structures in Java" 並返回它。
peek()
String nextBook = bookStack.peek();
System.out.println("Next book to read: " + nextBook);
這會告訴我們頂部的書但不移除它 —— 在這裡是 "Java for Beginners"。
empty()
if (bookStack.empty()) {
System.out.println("No more books to read!");
} else {
System.out.println("You still have books to read!");
}
這會檢查我們的堆疊是否為空。這就像檢查我們是否讀完了所有的書!
search(Object o)
int position = bookStack.search("Java for Beginners");
if (position != -1) {
System.out.println("Book found at position: " + position);
} else {
System.out.println("Book not found in the stack.");
}
這會在堆疊中搜索一本書。請記住,位置是從頂部開始計數的,頂部項目在位置 1。
繼承的方法
Stack 類別還從其父類別 Vector 和它實現的接口繼承了方法。一些有用的繼承方法包括:
- size():返回堆疊中的元素數量
- contains(Object o):檢查對象是否在堆疊中
- clear():從堆疊中移除所有元素
示例
讓我們通過一個有趣的例子將它們結合起來。想象我們正在跟蹤我們的薄餅堆疊!
import java.util.Stack;
public class PancakeStack {
public static void main(String[] args) {
Stack<String> pancakes = new Stack<>();
// 做薄餅
pancakes.push("Plain");
pancakes.push("Blueberry");
pancakes.push("Chocolate Chip");
System.out.println("Pancake stack: " + pancakes);
// 吃掉頂部的薄餅
String eatenPancake = pancakes.pop();
System.out.println("Yum! Just ate a " + eatenPancake + " pancake.");
// 檢查下一個薄餅
System.out.println("Next pancake is: " + pancakes.peek());
// 添加更多薄餅
pancakes.push("Banana");
// 檢查堆疊大小
System.out.println("Number of pancakes left: " + pancakes.size());
// 搜索薄餅
int position = pancakes.search("Plain");
if (position != -1) {
System.out.println("Plain pancake is " + position + " from the top.");
} else {
System.out.println("No plain pancakes left!");
}
}
}
輸出
當你運行此代碼時,你將看到以下內容:
Pancake stack: [Plain, Blueberry, Chocolate Chip]
Yum! Just ate a Chocolate Chip pancake.
Next pancake is: Blueberry
Number of pancakes left: 3
Plain pancake is 3 from the top.
就是這樣!你剛剛學會了 Java Stack 類別的基礎。請記住,就像疊薄餅或書一樣,Java 中的 Stack 遵循“後進先出”的原則。它是一個強大的工具,你會發現它在許多編程情況下都非常有用。
繼續練習,你將會像專家一樣堆疊和取消堆疊數據!編程愉快,願你的堆疊永遠充滿美味的薄餅……我的意思是,有用的數據!
Credits: Image by storyset