![](/img/trans.png)
[英]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.