Java中的Stack类是Vector的子类,实现后进先出(LIFO)结构,提供push、pop、peek等操作;示例中创建Integer栈并依次压入10、20、30,通过peek获取栈顶30,再循环弹出元素;尽管Stack线程安全,但因性能问题,官方推荐使用ArrayDeque替代。

Java中的Stack类是Vector的一个子类,用于实现后进先出(LIFO)的栈结构。它提供了基本的入栈、出栈、查看栈顶等操作。虽然在实际开发中推荐使用Deque替代Stack,但理解其用法仍有意义。
导入Stack类
要使用Stack,需要导入java.util.Stack包:
import java.util.Stack;
创建和初始化Stack
声明并创建一个Stack对象非常简单:
Stackstack = new Stack<>();
上面代码创建了一个存放字符串的栈。你可以将String替换为其他类型,如Integer、Double等。
立即学习“Java免费学习笔记(深入)”;
常用方法及使用示例
Stack提供了几个核心方法来操作栈元素:
- push(E item):将元素压入栈顶
- pop():移除并返回栈顶元素,如果栈为空会抛出EmptyStackException
- peek():返回栈顶元素但不移除
- empty():判断栈是否为空
- size():返回栈中元素个数
示例代码:
Stacknumbers = new Stack<>(); numbers.push(10); numbers.push(20); numbers.push(30); System.out.println("栈顶元素: " + numbers.peek()); // 输出 30 System.out.println("栈大小: " + numbers.size()); // 输出 3 while (!numbers.empty()) { System.out.println("弹出: " + numbers.pop()); } // 输出: // 弹出: 30 // 弹出: 20 // 弹出: 10
注意事项与建议
Stack类由于继承自Vector,具备线程安全特性,但性能相对较低。官方文档也指出,更推荐使用ArrayDeque作为栈的实现:
Dequestack = new ArrayDeque<>(); stack.push(1); stack.pop(); stack.peek();
这种方式更高效,且接口更清晰。
基本上就这些。了解Stack有助于理解集合框架,但在新项目中建议优先考虑Deque。










