亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> java

Java Stack 类全面指南:用法、核心方法与实战示例

Java Stack 类

本教程详细讲解 Java Stack 类、其核心方法,并通过实战示例帮助你掌握栈操作。

Java 集合框架包含 Stack 类,实现了经典的栈数据结构。根据 官方 Java 文档,Stack 继承自 Vector,继承了其所有方法,并额外提供了栈特有的操作。

Java Stack 类全面指南:用法、核心方法与实战示例


栈的实现原理

栈遵循 后进先出(LIFO) 原则:元素压入栈顶,从栈顶弹出。下图演示了这一行为。

Java Stack 类全面指南:用法、核心方法与实战示例


创建 Stack

导入 java.util.Stack 并用泛型实例化:

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

示例:

// Integer 栈
Stack<Integer> intStack = new Stack<>();
// String 栈
Stack<String> stringStack = new Stack<>();

Stack 的核心方法

除了继承自 Vector 的方法,Stack 还提供了五个专用操作,使其区别于通用集合。完整的 Vector 方法请参考 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("Stack: " + animals);
    }
}

输出

Stack: [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("初始 Stack: " + animals);
        String removed = animals.pop();
        System.out.println("移除的元素: " + removed);
    }
}

输出

初始 Stack: [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("Stack: " + animals);
        String top = animals.peek();
        System.out.println("栈顶元素: " + top);
    }
}

输出

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

search() 返回元素从栈顶起的 1 基数位置,若不存在返回 -1。

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("Stack: " + animals);
        int pos = animals.search("Horse");
        System.out.println("Horse 的位置: " + pos);
    }
}

输出

Stack: [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("Stack: " + animals);
        boolean isEmpty = animals.empty();
        System.out.println("栈是否为空? " + isEmpty);
    }
}

输出

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

推荐使用 ArrayDeque 替代 Stack

Stack 虽实现了栈,但被视为遗留类。现代 Java 代码推荐使用 ArrayDeque(实现 Deque 接口)实现栈功能,因其性能更好、语义更清晰。详见:


java

  1. 深入理解 Java final 关键字:变量、方法与类的不可变性
  2. Java instanceof 运算符完全指南:用法、继承与接口检查
  3. 精通 Java 继承:核心概念、类型与实战示例
  4. 深入理解 Java 静态嵌套类:用法、差异与实战示例
  5. 精通 Java 匿名内部类:定义、语法与实战示例
  6. Java 单例模式详解:安全实现与使用指南
  7. 精通 Java 反射:运行时检查类、方法与字段
  8. 精通 Java ArrayList:操作、方法与最佳实践
  9. Java HashSet 类完全指南:操作、方法与集合论实战
  10. 掌握 Java ObjectOutputStream:序列化、核心方法与实战示例
  11. 掌握 Java 泛型:构建可复用、类型安全的代码
  12. 掌握 Java 文件操作:java.io 包下的创建、读取、写入与删除