Java堆栈类:初学者指南

引言

你好,未来的Java开发者!今天,我们将深入探讨Java堆栈类的奇妙世界。如果你以前从未编写过一行代码,请不要担心——我将作为你在这段激动人心的旅程中的友好向导。

Java - Stack Class

想象一下你在整理书籍。你将它们堆起来,一本放在另一本上面。你最后放上去的那本书是你需要时首先要拿的一本。这正是Java中堆栈的工作方式!它是一个“后进先出”(LIFO)的数据结构,在编程中非常有用。

类声明

我们从基础开始。在Java中,堆栈类是java.util包的一部分。要使用它,你需要像这样导入它:

import java.util.Stack;

堆栈类扩展了向量类,并实现了如列表、集合、可迭代、可克隆和可序列化等接口。如果这些术语现在听起来像外星语言,没关系——我们将会涉及到它们!

类构造函数

堆栈类只有一个构造函数:

Stack<E> stack = new Stack<E>();

在这里,'E'是你想在堆栈中存储的元素类型的占位符。它可以是Integer、String或任何其他对象类型。例如:

Stack<Integer> numberStack = new Stack<Integer>();
Stack<String> bookStack = new Stack<String>();

在第一行,我们创建了一个将存储整数的堆栈。在第二行,我们为字符串创建了一个堆栈——完美地符合我们的书堆比喻!

类方法

现在,让我们看看堆栈类的主要方法。我将在表格中展示它们,以便于参考:

方法 描述
push(E item) 将一个项目添加到堆栈顶部
pop() 移除并返回堆栈顶部的项目
peek() 返回顶部项目,但不移除它
empty() 检查堆栈是否为空
search(Object o) 搜索对象并返回其位置

让我们通过一些例子来分解这些方法:

push(E item)

Stack<String> bookStack = new Stack<String>();
bookStack.push("Java初学者");
bookStack.push("Java中的数据结构");

在这里,我们向堆栈中添加书籍。"Java中的数据结构"现在位于"Java初学者"的顶部。

pop()

String topBook = bookStack.pop();
System.out.println("移除的书籍:" + topBook);

这从堆栈顶部移除了"Java中的数据结构"并返回它。

peek()

String nextBook = bookStack.peek();
System.out.println("接下来要读的书籍:" + nextBook);

这告诉我们顶部书籍而不移除它——在这种情况下是"Java初学者"。

empty()

if (bookStack.empty()) {
System.out.println("没有更多的书要读!");
} else {
System.out.println("你还有书要读!");
}

这检查我们的堆栈是否为空。这就像检查我们是否读完了所有的书!

search(Object o)

int position = bookStack.search("Java初学者");
if (position != -1) {
System.out.println("书籍在位置:" + position);
} else {
System.out.println("堆栈中没有找到书籍。");
}

这在我们的堆栈中搜索一本书。请记住,位置是从顶部开始计算的,顶部项目位于位置1。

继承的方法

堆栈类还从其父类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("原味");
pancakes.push("蓝莓");
pancakes.push("巧克力碎片");

System.out.println("煎饼堆栈:" + pancakes);

// 吃掉顶部的煎饼
String eatenPancake = pancakes.pop();
System.out.println("好吃!刚吃了一个" + eatenPancake + "煎饼。");

// 检查下一个煎饼
System.out.println("下一个煎饼是:" + pancakes.peek());

// 添加更多煎饼
pancakes.push("香蕉");

// 检查堆栈大小
System.out.println("剩余煎饼数量:" + pancakes.size());

// 搜索煎饼
int position = pancakes.search("原味");
if (position != -1) {
System.out.println("原味煎饼距离顶部" + position + "个位置。");
} else {
System.out.println("没有原味煎饼了!");
}
}
}

输出

运行此代码时,你会看到类似以下内容:

煎饼堆栈:[原味, 蓝莓, 巧克力碎片]
好吃!刚吃了一个巧克力碎片煎饼。
下一个煎饼是:蓝莓
剩余煎饼数量:3
原味煎饼距离顶部3个位置。

就这样!你已经学会了Java堆栈类的基础知识。请记住,就像堆叠煎饼或书籍一样,Java中的堆栈遵循“后进先出”原则。它是一个强大的工具,你会在许多编程场景中找到它的用处。

继续练习,你很快就会像专业人士一样堆叠和取消堆叠数据!愉快的编码,愿你的堆栈总是充满美味的煎饼……我的意思是,有用的数据!

Credits: Image by storyset