Java 栈
栈结构是一种限制插入和删除操作的线性结构,具有后入先出(LIFO)的特性。它的特点是只允许在表的一端进行插入和删除操作,这一端被称为栈顶,另一端被称为栈底,每次插入和删除操作都只能在栈顶进行,而且每次只能从栈顶删除一个元素,因此满足后入先出(LIFO)的原则。如下图所示,最后放入的元素 a,也是第一个会被弹出的元素。
Java 中的栈可以使用 java.util.Stack
类来实现。Stack 类提供了一系列的方法来操作栈,如:push()
、pop()
、peek()
等。它们分别用于压入、弹出、查看栈顶元素等操作。
示例:
public static void main(String[] args) {
// 创建一个栈
Stack<Integer> stack = new Stack<>();
// 压入元素
stack.push(1);
stack.push(2);
stack.push(3);
// 弹出栈顶元素
Integer top = stack.pop();
System.out.println(top);
// 查看栈顶元素
Integer peek = stack.peek();
System.out.println(peek);
// 检查栈是否为空
boolean isEmpty = stack.isEmpty();
System.out.println(isEmpty);
// 查找元素
int index = stack.search(2);
System.out.println(index);
}
总结:
- 栈是一种先进后出的数据结构,这意味着当添加或获取元素时,最后添加的元素将是第一个被取出的元素
- 栈的大小是有限的,必须提前设定,一旦栈的大小设定了就不能再改变了(?)
- 在使用栈时应避免溢出,即在添加元素时应检查栈是否已满
- 同样,在获取元素时也应检查栈是否为空,以避免空指针异常
- 在使用栈时应尽量简化代码,以避免出现错误