跳到主要内容

Java Stack 类

提示
  1. Stack类基础Stack类是Java集合框架的一部分,提供栈数据结构的功能,并继承自Vector类。
  2. 栈的特性和实现:栈实现了后进先出(LIFO)的原则,其中元素被添加和移除都在栈的顶部进行。
  3. Stack类的关键方法Stack提供了特殊的方法如push()添加元素、pop()移除元素、peek()查看栈顶元素、search()查找元素位置以及empty()判断栈是否为空。建议使用ArrayDeque替代Stack进行栈实现。

Java 集合框架中有一个名为 Stack 的类,提供了栈数据结构的功能。

Stack 类扩展了 Vector 类。

Java Stack 类扩展了 Vector 类

栈的实现

在栈中,元素是按照后进先出的方式存储和访问的。也就是说,元素被添加到栈的顶部,并从栈的顶部移除。

栈数据结构的工作方式

创建一个栈

为了创建一个栈,我们首先必须导入 java.util.Stack 包。导入包之后,下面是我们如何在 Java 中创建一个栈的方法。

Stack<Type> stacks = new Stack<>();

这里,Type 表示栈的类型。例如,

// 创建 Integer 类型的栈
Stack<Integer> stacks = new Stack<>();

// 创建 String 类型的栈
Stack<String> stacks = new Stack<>();

Stack 方法

由于 Stack 继承了 Vector 类,它继承了所有 Vector 的方法。要了解不同的 Vector 方法,请访问 Java Vector 类

除了这些方法之外,Stack 类还包含 5 个方法,使其区别于 Vector

push() 方法

要将元素添加到栈顶,我们使用 push() 方法。例如,

import java.util.Stack;

class Main {
public static void main(String[] args) {
Stack<String> animals= new Stack<>();

// 向栈中添加元素
animals.push("Dog");
animals.push("Horse");
animals.push("Cat");

System.out.println("栈: " + animals);
}
}

输出

: [Dog, Horse, Cat]

pop() 方法

要从栈顶移除元素,我们使用 pop() 方法。例如,

import java.util.Stack;

class Main {
public static void main(String[] args) {
Stack<String> animals= new Stack<>();

// 向栈中添加元素
animals.push("Dog");
animals.push("Horse");
animals.push("Cat");
System.out.println("初始栈: " + animals);

// 移除栈顶元素
String element = animals.pop();
System.out.println("移除的元素: " + element);
}
}

输出

初始栈: [Dog, Horse, Cat]
移除的元素: Cat

peek() 方法

peek() 方法返回栈顶的对象。例如,

import java.util.Stack;

class Main {
public static void main(String[] args) {
Stack<String> animals= new Stack<>();

// 向栈中添加元素
animals.push("Dog");
animals.push("Horse");
animals.push("Cat");
System.out.println("栈: " + animals);

// 访问栈顶元素
String element = animals.peek();
System.out.println("栈顶元素: " + element);

}
}

输出

: [Dog, Horse, Cat]
栈顶元素: Cat

search() 方法

要在栈中搜索一个元素,我们使用 search() 方法。它返回元素从栈顶开始的位置。例如,

import java.util.Stack;

class Main {
public static void main(String[] args) {
Stack<String> animals= new Stack<>();

// 向栈中添加元素
animals.push("Dog");
animals.push("Horse");
animals.push("Cat");
System.out.println("栈: " + animals);

// 搜索一个元素
int position = animals.search("Horse");
System.out.println("Horse 的位置: " + position);
}
}

输出

: [Dog, Horse, Cat]
Horse 的位置: 2

empty() 方法

要检查栈是否为空,我们使用 empty() 方法。例如,

import java.util.Stack;

class Main {
public static void main(String[] args) {
Stack<String> animals= new Stack<>();

// 向栈中添加元素
animals.push("Dog");
animals.push("Horse");
animals.push("Cat");
System.out.println("栈: " + animals);

// 检查栈是否为空
boolean result = animals.empty();
System.out.println("栈是否为空? " + result);
}
}

输出

: [Dog, Horse, Cat]
栈是否为空? false

使用 ArrayDeque 替代 Stack

Stack 类直接实现了栈数据结构。然而,不建议使用它。相反,建议使用 ArrayDeque 类(实现了 Deque 接口)在 Java 中实现栈数据结构。

要了解更多,请访问: