2011-11-26 57 views
3

這也許是一種Java瑣事問題。用Java Collections取代傳統堆棧?

我多次使用了Stack實現。

我已經讀過,這被認爲是遺留類,並且由於它的子類Vector在單線程應用程序中使其性能很差。

我的問題是,Java集合類中最好的選擇是什麼?

是否有另一個Stack類可用(可能是一個不同的名稱),這是可供選擇的類?

我的意思是,確定在另一個現有的數據結構上實現一個堆棧很容易,但我希望有一個現有的Stack可以使用。

回答

3

如果你讀了更多當前的Javadoc(1.6或1.7爲例),而不是舊的1.4.2文檔,你會發現:

提供LIFO堆棧操作的更完整,一致通過雙端隊列接口和其實施方式中,應優先使用這一類

http://docs.oracle.com/javase/6/docs/api/java/util/Stack.html http://docs.oracle.com/javase/7/docs/api/java/util/Stack.html

+0

+1。我認爲德克是一個隊列 – Cratylus

+0

@ user384706它是。 –

+0

好吧。它恰好比'Stack'快 –

1

您可以使用Deque從同一端添加和刪除東西。

+0

這不是一個雙端隊列嗎?一個隊列而不是一個堆棧? – Cratylus

+0

@ user384706堆棧和隊列以外的隊列之間的有意義的區別是什麼提供了更多的接入點? –

+0

堆棧是一個LIFO.Queue是一個FIFO。檢索是不同的 – Cratylus

0

從堆棧的Javadoc:

的更完整和一致的組LIFO堆棧操作的是 由雙端隊列接口和其實施方式中,這應該在 優先使用此類提供。

Deque stack = new ArrayDeque();

1

您可以使用LinkedList實現Deque接口,並允許推送和彈出。