Java 中构建栈结构(LIFO)的几种常见方式和它们的区别

Java 中构建**栈结构(LIFO)**的几种常见方式和它们的区别:


✅ 1. Deque 接口 + ArrayDeque 实现类(⭐推荐)

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

✅ 特点:

  • Deque(双端队列)可以同时支持栈(后进先出)和队列(先进先出);
  • ArrayDeque 是它的高效实现类;
  • 使用 push()/pop()/peek() 模拟栈行为;
  • Stack 类效率高,因为没有同步开销(线程不安全但更快);
  • JDK 官方推荐:自 Java 6 起,建议用 ArrayDeque 替代 Stack

使用示例:

Deque<Character> stack = new ArrayDeque<>();
stack.push('a');      // 压栈
stack.pop();          // 弹栈
stack.peek();         // 查看栈顶

✅ 2. Stack 类(老派方式,不推荐)

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

✅ 特点:

  • StackVector 的子类,是 Java 早期版本中提供的栈结构;
  • 方法:push(), pop(), peek()
  • 线程安全(同步) → 有性能开销;
  • 不推荐用于单线程程序;

使用示例:

Stack<Character> stack = new Stack<>();
stack.push('a');
stack.pop();
stack.peek();

✅ 3. LinkedList 作为 Deque 的实现类(也可以用于栈)

Deque<Character> stack = new LinkedList<>();

✅ 特点:

  • LinkedList 也实现了 Deque 接口;
  • 同样可以用 push()/pop()/peek() 来模拟栈;
  • 但相比 ArrayDeque 来说,它底层是链表结构,缓存局部性差,访问较慢;
  • 除非你特别需要在任意位置插入/删除,一般推荐 ArrayDeque

✅ 总结比较:

方式是否推荐是否线程安全底层结构性能特点
ArrayDeque⭐推荐数组快(O(1))官方推荐替代 Stack
Stack❌不推荐动态数组 (Vector)慢(同步开销)过时,用于早期线程安全需求
LinkedList✅可选链表中等双向链表实现,可当队列/栈使用

✅ 什么时候用哪个?

  • 默认推荐: ArrayDeque → 更快、更简洁、现代写法;
  • 老项目兼容: 可能还在使用 Stack
  • 需要双端队列或链式结构: LinkedList 适合插入/删除操作频繁的场景;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值