2013-01-22 101 views
0

所以我有一個列表,可以在堆棧或隊列。兩者之間有什麼表現差異?Java堆棧與隊列性能

另外我注意到java.utils的實現擴展了Vector。做自己的實現會更快,還是直接使用Vector?

+4

沒有提到具體的實現,這個問題是沒有意義的。 – EJP

+0

我能給你的最明顯的答案是FIFO中的隊列性能更好,FILO中的性能更好。 – drum

+0

只是我在問題中提到的默認java.utils實現。我可以從第一個或最後一個。 –

回答

4

java.util.Stack類已被棄用。改爲使用Deque

至於性能,即依賴於實現,

+2

它不被棄用。 -1。 – EJP

+3

它不被棄用,但不推薦再使用它,如javadocs所述'Deque接口及其實現提供了更完整和一致的LIFO堆棧操作集,應優先使用此類.'。 –

+1

我應該用不同的措辭 - 它沒有被正式棄用,但是像'Vector',它在現代Java程序中不被推薦。 –

1

性能取決於您要使用(數組列表,鏈表等),你將要執行的所有操作什麼數據結構。

因此,取決於你可以決定你的數據結構。建議您通過Java API來了解不同API的優缺點。

0

這取決於使用模式和具體實現。

一般:

  • 如果你想在他們接收(先入先出或FIFO)的順序來處理傳入項流使用隊列。適用於工作清單和處理請求。
  • 使用堆棧如果您只想從堆棧頂部推入並彈出(後進先出或LIFO)。適用於遞歸算法。

P.S.我不會推薦使用任何擴展或使用java.util.Vector的舊實現。現在有很多更好的實現,這取決於你的具體用例。

1

堆棧和矢量都是同步的。使用java.util.ArrayDeque中的堆棧和隊列而是看API:

這個類是有可能作爲堆棧使用時比棧更快,比鏈表更快隊列時。