将旧版堆栈替换为 Java 集合中的内容?

2022-09-03 00:55:22

这也许是一个Java琐事问题。

我已经多次使用Stack实现。

我已经读到这被认为是一个遗留类,并且由于它的子类使其在单线程应用程序中的性能不佳。Vector

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

是否有另一个可用的类(也许是不同的名称)可供选择?Stack

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


答案 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


答案 2

在 Java7 中,您可以使用

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

以获取类似堆栈的对象。add() 的工作方式类似于 push() 和 remove() 的工作方式类似于 pop() 等。在提出这个问题很久之后,我才在这里回答,因为这似乎是新的“正确”答案。