首页 文章

用Java Collections替换旧版Stack?

提问于
浏览
5

这或许是一个Java琐事问题 .

我多次使用Stack实现 .

我已经读过这被认为是遗留类,并且由于它的子类 Vector 在单线程应用程序中使其性能变差 .

我的问题是,Java Collection类中最好的选择是什么?

是否可以选择另一个 Stack 类(可能是不同的名称)?

我的意思是,好的实现堆栈另一个现有的数据结构很容易,但我希望有一个现有的 Stack 使用 .

6 回答

  • 1

    如果您阅读更新的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

  • 4

    LinkedList实现 pushpop 方法 . 另请参见其他Deque实现 .

    Commons Collections实现了ArrayStack类 .

  • 2

    在Java7中,您可以使用

    http://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#asLifoQueue(java.util.Deque)

    获得类似Stack的对象 . add()的工作方式类似于push(),remove()的工作方式类似于pop()等 . 我在问这个问题后很久就回答了这个问题,因为这似乎是新的“正确”答案 .

  • 2

    您可以使用Deque在同一端添加和删除内容 .

  • 0

    您可以使用LinkedList实现 Deque 接口并允许推送和弹出 .

  • 1

    来自Stack javadoc:

    Deque接口及其实现提供了更完整和一致的LIFO堆栈操作集,应该优先使用这个类 . Deque stack = new ArrayDeque();

相关问题