当前位置:首页 > Java

java堆栈如何使用

2026-03-24 16:19:49Java

堆栈的基本概念

堆栈(Stack)是一种遵循后进先出(LIFO)原则的数据结构,核心操作包括压栈(push)和弹栈(pop)。Java中可通过java.util.Stack类或Deque接口实现。

使用java.util.Stack

Stack是Java标准库提供的类,继承自Vector,但推荐优先使用Deque实现(见下文)。

初始化堆栈

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

压栈操作

stack.push(1);  // 元素1入栈
stack.push(2);  // 元素2入栈

弹栈操作

java堆栈如何使用

int topElement = stack.pop();  // 弹出栈顶元素2

查看栈顶元素

int peekElement = stack.peek();  // 获取栈顶元素1但不移除

检查堆栈是否为空

boolean isEmpty = stack.empty();

使用Deque接口(推荐)

Java官方推荐用ArrayDeque替代Stack,因其性能更好且避免了Vector的同步开销。

java堆栈如何使用

初始化堆栈

Deque<Integer> stack = new ArrayDeque<>();

压栈与弹栈

stack.push(1);  // 入栈
stack.push(2);  
int top = stack.pop();  // 出栈

其他操作

int peek = stack.peek();  // 查看栈顶
boolean isEmpty = stack.isEmpty();

堆栈的典型应用场景

  • 括号匹配:检查表达式中的括号是否成对出现。
  • 函数调用栈:JVM用堆栈管理方法调用和返回地址。
  • 逆波兰表达式:通过堆栈计算后缀表达式。

示例:括号匹配校验

public boolean isValid(String s) {
    Deque<Character> stack = new ArrayDeque<>();
    for (char c : s.toCharArray()) {
        if (c == '(' || c == '[' || c == '{') {
            stack.push(c);
        } else {
            if (stack.isEmpty()) return false;
            char top = stack.pop();
            if ((c == ')' && top != '(') || 
                (c == ']' && top != '[') || 
                (c == '}' && top != '{')) {
                return false;
            }
        }
    }
    return stack.isEmpty();
}

注意事项

  • 线程安全Stack是线程安全的(继承自Vector),但性能较低;ArrayDeque非线程安全。
  • 容量限制ArrayDeque默认初始容量为16,动态扩容,适合高频操作。
  • 替代方案:复杂场景可考虑LinkedList实现Deque,但通常ArrayDeque更高效。

分享给朋友:

相关文章

java如何使用

java如何使用

Java 基本使用方法 Java 是一种广泛使用的编程语言,适用于开发各种类型的应用程序。以下是 Java 的基本使用方法,包括环境配置、语法基础和常用操作。 安装 Java 开发环境 下载并安装…

react如何使用swiper

react如何使用swiper

安装 Swiper 依赖 在 React 项目中使用 Swiper 前,需要安装 Swiper 的核心库和 React 组件库。通过 npm 或 yarn 安装以下依赖: npm install s…

react refs如何使用

react refs如何使用

React Refs 的基本概念 Refs 提供了一种直接访问 DOM 节点或 React 组件实例的方式。通常在需要直接操作 DOM 或访问组件方法时使用。 创建 Refs 使用 React.cr…

react dnd如何使用

react dnd如何使用

React DnD 使用指南 React DnD(Drag and Drop)是一个用于在 React 应用中实现拖放功能的库。它基于 HTML5 的拖放 API,提供了更高级的抽象和更好的 Reac…

react如何使用dispatch

react如何使用dispatch

使用 useDispatch 钩子 在函数组件中,通过 react-redux 提供的 useDispatch 钩子获取 dispatch 函数。引入 useDispatch 后直接调用即可:…

react如何使用less

react如何使用less

使用 Less 在 React 项目中 要在 React 项目中使用 Less,需要安装相关依赖并配置构建工具(如 Webpack 或 Create React App 的配置覆盖)。以下是具体方法:…