Stack类是Vector的子类,实现LIFO栈结构,提供push、pop、peek、empty和search方法;尽管其线程安全,但现代Java推荐使用ArrayDeque替代以获得更好性能。

Java中的Stack类是Vector的一个子类,用于实现后进先出(LIFO)的栈结构。虽然在现代Java开发中推荐使用Deque接口及其实现类如ArrayDeque来代替Stack,但了解其常用方法仍有助于理解传统代码。
push(E item)
将元素压入栈顶,并返回该元素。
- 如果栈为空,压入第一个元素后栈大小变为1
- 每次调用push都会把新元素放在当前栈顶位置
- 示例:
// 创建一个Integer类型的栈
Stackstack = new Stack();
stack.push(10); // 栈中现在有 [10]
pop()
移除并返回栈顶元素。如果栈为空,抛出EmptyStackException异常。
- 这是获取栈顶值并从栈中删除它的主要方式
- 使用前建议先检查是否为空
- 示例:
int top = stack.pop(); // 返回10,栈变为空
peek()
返回栈顶元素但不移除它。如果栈为空,同样抛出异常。
立即学习“Java免费学习笔记(深入)”;
模板采用响应式设计,自动适应手机,电脑及平板显示;满足单一店铺外卖需求。功能:1.菜单分类管理2.菜品管理:菜品增加,删除,修改3.订单管理4.友情链接管理5.数据库备份6.文章模块:如:促销活动,帮助中心7.单页模块:如:企业信息,关于我们更强大的功能在开发中……安装方法:上传到网站根目录,运行http://www.***.com/install 自动
- 适合用于查看当前栈顶值而不改变栈状态
- 常用于条件判断或调试
- 示例:
stack.push(20);
stack.push(30);
int topVal = stack.peek(); // topVal 是30,栈仍为 [20, 30]
empty()
判断栈是否为空,空则返回true,否则返回false。
- 替代直接比较
size() == 0的更语义化方式 - 常与pop或peek配合使用防止异常
- 示例:
if (!stack.empty()) {
System.out.println(stack.pop());
}
search(Object o)
查找指定元素在栈中的位置(从栈顶开始计数,从1开始)。找不到返回-1。
- 注意:返回的是“深度”,不是索引
- 栈顶元素的位置是1,下一个为2,依此类推
- 示例:
stack.push("A");
stack.push("B");
int pos = stack.search("A"); // 返回2
基本上就这些。虽然Stack类提供了直观的方法支持,但由于性能和设计问题,实际项目中更推荐使用Deque









