原文: https://www.programiz.com/java-programming/stack

在本教程中,我们将借助示例学习 Java Stack类及其方法。

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

Stack类扩展了Vector类。

Java `Stack`类 - 图1


Stack实现

在栈中,元素以后进先出的方式存储和访问。 即,元素被添加到栈的顶部,并从栈的顶部移除。

Java `Stack`类 - 图2


创建Stack

为了创建栈,我们必须首先导入java.util.Stack包。 导入包后,就可以使用 Java 创建栈。

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

此处,Type表示栈的类型。 例如,

  1. // Create Integer type stack
  2. Stack<Integer> stacks = new Stack<>();
  3. // Create String type stack
  4. Stack<String> stacks = new Stack<>();

Stack方法

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

除了这些方法之外,Stack类还包括 5 个与Vector区别的方法。


push()方法

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

  1. import java.util.Stack;
  2. class Main {
  3. public static void main(String[] args) {
  4. Stack<String> animals= new Stack<>();
  5. // Add elements to Stack
  6. animals.push("Dog");
  7. animals.push("Horse");
  8. animals.push("Cat");
  9. System.out.println("Stack: " + animals);
  10. }
  11. }

输出

  1. Stack: [Dog, Horse, Cat]

pop()方法

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

  1. import java.util.Stack;
  2. class Main {
  3. public static void main(String[] args) {
  4. Stack<String> animals= new Stack<>();
  5. // Add elements to Stack
  6. animals.push("Dog");
  7. animals.push("Horse");
  8. animals.push("Cat");
  9. System.out.println("Initial Stack: " + animals);
  10. // Remove element stacks
  11. String element = animals.pop();
  12. System.out.println("Removed Element: " + element);
  13. }
  14. }

输出

  1. Initial Stack: [Dog, Horse, Cat]
  2. Removed Element: Cat

peek()方法

peek()方法从栈顶部返回一个对象。 例如,

  1. import java.util.Stack;
  2. class Main {
  3. public static void main(String[] args) {
  4. Stack<String> animals= new Stack<>();
  5. // Add elements to Stack
  6. animals.push("Dog");
  7. animals.push("Horse");
  8. animals.push("Cat");
  9. System.out.println("Stack: " + animals);
  10. // Access element from the top
  11. String element = animals.peek();
  12. System.out.println("Element at top: " + element);
  13. }
  14. }

输出

  1. Stack: [Dog, Horse, Cat]
  2. Element at top: Cat

search()方法

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

  1. import java.util.Stack;
  2. class Main {
  3. public static void main(String[] args) {
  4. Stack<String> animals= new Stack<>();
  5. // Add elements to Stack
  6. animals.push("Dog");
  7. animals.push("Horse");
  8. animals.push("Cat");
  9. System.out.println("Stack: " + animals);
  10. // Search an element
  11. int position = animals.search("Horse");
  12. System.out.println("Position of Horse: " + position);
  13. }
  14. }

输出

  1. Stack: [Dog, Horse, Cat]
  2. Position of Horse: 2

empty()方法

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

  1. import java.util.Stack;
  2. class Main {
  3. public static void main(String[] args) {
  4. Stack<String> animals= new Stack<>();
  5. // Add elements to Stack
  6. animals.push("Dog");
  7. animals.push("Horse");
  8. animals.push("Cat");
  9. System.out.println("Stack: " + animals);
  10. // Check if stack is empty
  11. boolean result = animals.empty();
  12. System.out.println("Is the stack empty? " + result);
  13. }
  14. }

输出

  1. Stack: [Dog, Horse, Cat]
  2. Is the stack empty? false

使用ArrayDeque而不是Stack

Stack类提供栈数据结构的直接实现。 但是,建议不要使用它。 而是使用ArrayDeque类(实现Deque接口)在 Java 中实现栈数据结构。

要了解更多信息,请访问: