前几天刷题的时候,题解区大佬提到了 Java程序员,不要用Stack(原链接找不着了)。
之前从来没有注意到哎,不过倒也是,除了刷题偶尔需要自己做栈外,日常业务开发好像没有敲过 Stack这个类。
Stack继承了Vector。因为Vector是一个动态数组。数组嘛,瞅一下它的方法就明白了
public void add(int index, E element) {
insertElementAt(element, index);
}
public synchronized E remove(int index) {
……
}
奥,这些方法暴露在外面,栈就不是正经的栈了。
官方说 建议使用 Deque< E > stack = new ArrayDeque< E>();
但是双端队列也不是正经的栈啊!
其实自己简单封装一下也可以用。(真需要用的时候再按实际场景设计呗)
public class StackDemo<E> {
private Stack<E> s = null;
public StackDemo() {
s = new Stack<E>();
}
public E push(E e) {
return s.push(e);
}
public E pop() {
return s.pop();
}
}
参考: Java程序员,不要用Stack