爲了安全,棧還是不要用Stack實現了

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章