java 中 Stack 已不推荐使用,应该用什么代替?
为什么不推荐用 Stack?#
java 中 Stack 已被“废弃”,主要是因为其性能低。Stack 继承自 Vector, 而 Vector 在每个方法中都加了锁,因此 Stack 性能低下。
详细分析:算法动画图解 | 被 "废弃" 的 Java 栈,为什么还在用 - 知乎
用什么代替 Stack?#
建议使用 Deque<Integer> stack = new ArrayDeque<Integer>();
代替 Stack。源自 java 8 的api文档:
Deque 的主要用法#
Deque 是一个接口,初始化 Deque: Deque<Integer> stack = new ArrayDeque<Integer>();
Deque对于添加与删除元素有很多名字不一样的方法,但功能大致是相同的。可以根据不同的使用场景使用不同名字的方法。比如(源自 java 8 的api文档中 Deque 的结果):
可以看到:
- Deque 作为双端队列用时,可以使用 addFirst, removeFirst, addLast, removeLast 等方法;
- Deque 作为队列使用时,可以使用 add, poll 等方法;
- Deque 作为栈使用时,可以使用 push, pop 等方法。
其实这些方法功能基本都一样,只是不同的名字更适用的场景不同而已。
标签:
Java
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源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权限