java 中 Stack 已不推荐使用,应该用什么代替?

为什么不推荐用 Stack?#

java 中 Stack 已被“废弃”,主要是因为其性能低。Stack 继承自 Vector, 而 Vector 在每个方法中都加了锁,因此 Stack 性能低下。

详细分析:算法动画图解 | 被 "废弃" 的 Java 栈,为什么还在用 - 知乎

用什么代替 Stack?#

建议使用 Deque<Integer> stack = new ArrayDeque<Integer>(); 代替 Stack。源自 java 8 的api文档:

image

Deque 的主要用法#

Deque 是一个接口,初始化 Deque: Deque<Integer> stack = new ArrayDeque<Integer>();

Deque对于添加与删除元素有很多名字不一样的方法,但功能大致是相同的。可以根据不同的使用场景使用不同名字的方法。比如(源自 java 8 的api文档中 Deque 的结果):

image

可以看到:

  • Deque 作为双端队列用时,可以使用 addFirst, removeFirst, addLast, removeLast 等方法;
  • Deque 作为队列使用时,可以使用 add, poll 等方法;
  • Deque 作为栈使用时,可以使用 push, pop 等方法。

其实这些方法功能基本都一样,只是不同的名字更适用的场景不同而已。

posted @   拾月凄辰  阅读(505)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
历史上的今天:
2021-02-24 Dockerfile命令RUN、CMD、ENTRYPOINT的区别
2021-02-24 Dockerfile命令COPY和ADD的异同
2020-02-24 linux如何配置普通用户(非root用户)的sudo权限
点击右上角即可分享
微信分享提示
主题色彩