0
点赞
收藏
分享

微信扫一扫

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

为什么不推荐用 Stack?

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

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

用什么代替 Stack?

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

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

Deque 的主要用法

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

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

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

可以看到:

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

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



举报

相关推荐

0 条评论