在 java 中,stack 类是一种遵循“后进先出”(lifo,last in first out)原则的栈结构,它直接继承自 vector 类。
一、核心操作
- 入栈(push)
调用 push() 方法可将新元素压入栈顶。示例如下:
Stack<integer> stack = new Stack(); stack.push(1); stack.push(2);</integer>
- 出栈(pop)
pop() 方法用于删除并返回当前栈顶元素;若栈为空,则抛出 EmptyStackException 异常。
int popped = stack.pop(); // 返回 2
- 查看栈顶(peek)
peek() 方法仅获取栈顶元素而不移除它;空栈时同样会触发 EmptyStackException。
int top = stack.peek(); // 返回 1

- 判空检测(empty)
通过 empty() 方法可判断栈是否为空,该方法返回一个 boolean 值。
boolean isEmpty = stack.empty();
二、扩展功能
Java开发手册规约集合,基于阿里巴巴Java开发手册(嵩山版)。 涵盖7大维度:编程规约、异常日志、单元测试、安全规约、MySQL数据库、工程结构、设计规约。 当用户需要:(1) 编写或审查Java代码 (2) 检查命名/代码规范 (3) 处理异常和日志 (4) 编写单元测试 (5) 安全编码 (6) 数据库设...
- 元素查找(search)
search() 方法用于定位指定元素在栈中的位置(以栈顶为基准,从 1 开始计数);若未找到则返回 -1。
int position = stack.search(2); // 返回 1
三、使用须知
- 线程安全性
Stack 类内部方法均为同步实现,天然支持多线程环境。但若无并发需求,推荐改用 Deque 接口的具体实现类(如 ArrayDeque),因其性能更优且设计更现代。
- 泛型支持
Stack 支持泛型参数,便于类型安全地存储特定数据类型,例如:Stack<string></string>。
- 集合互转能力
可通过 toArray() 方法将栈内容转为数组;也可借助迭代器对栈内元素进行遍历操作。
综上所述,Stack 类封装了简洁直观的栈操作逻辑,适用于典型的 LIFO 场景。但在实际开发中,应结合线程模型、性能要求及 API 演进趋势,合理评估是否选用 Stack 或其替代方案(如 Deque)。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










