Java Stack 類別:初學者指南

介紹

你好,未來的 Java 開發者!今天,我們將深入探討 Java Stack 類別的迷人世界。如果你以前從未寫過一行代碼,也別擔心 —— 我將成為你在這次刺激的旅程中的友好指南。

Java - Stack Class

想象一下你在整理書籍。你把它們疊起來,一個疊在另一個上面。你最後放在疊上的書是你需要時第一本會拿起的書。這就是 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