为什么不推荐用 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 等方法。
其实这些方法功能基本都一样,只是不同的名字更适用的场景不同而已。