[英]Stack Overflow in Java with the Stack implementation in Collections-Java
[英]Replace the legacy Stack with what from Java Collections?
這或許是一個Java瑣事問題。
我多次使用Stack實現。
我已經讀過這被認為是一個遺留類,並且由於它的子類Vector
使其在單線程應用程序中的性能不佳。
我的問題是,Java Collection類中最好的選擇是什么?
是否有另一個可用的Stack
類(可能是不同的名稱)?
我的意思是,可以很容易地實現另一個現有數據結構的堆棧,但我希望有一個現有的Stack
可供使用。
如果您閱讀更新的Javadoc(例如1.6或1.7)而不是舊的1.4.2文檔,您會發現:
Deque接口及其實現提供了更完整和一致的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
在Java7中,您可以使用
http://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#asLifoQueue(java.util.Deque)
獲得類似Stack的對象。 add()的工作方式類似於push(),remove()的工作方式類似於pop()等。我在問這個問題后很久就在這里回答,因為這似乎是新的“正確”答案。
LinkedList實現了push
和pop
方法。 另請參見其他Deque實現。
Commons Collections實現了一個ArrayStack類。
您可以使用Deque在同一端添加和刪除內容。
您可以使用LinkedList
來實現Deque
接口,並允許推送和彈出。
來自Stack javadoc:
Deque接口及其實現提供了更完整和一致的LIFO堆棧操作集,應優先使用此類。
Deque stack = new ArrayDeque ();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.