前幾天刷題的時候,題解區大佬提到了 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