java - 为什么 Stack 是一个类而 Queue 是一个接口(interface)?

标签 java stack queue

<分区>

我觉得它们很相似...什么时候我们需要使用堆栈或队列,为什么不直接使用 ArrayList 或 LinkedList 来代替它们呢?

最佳答案

Stack,是从Vector派生的对象的后进先出堆栈,也是一个类。 Vector 与 Java 最初附带的“旧”集合集一起使用,并最终派生自 AbstractCollection。值得注意的是,确实有一个 Stack 的规范实现; QueueList许多众所周知的实现,如果选择正确,它们可以产生显着的性能差异。

另一方面,

Queue 遵循当今通常使用的"new"集合集合中的 Collection 接口(interface),因此它遵循这些接口(interface)并带有各种的实现。

Stack 应在需要 LIFO 语义时使用,而 Queue 应在需要 First-In-First-Out 语义时使用。

ArrayListLinkedList 存储有序事物的集合,并且不符合 Stack< 的用例Queue 直接。 StackQueue 在某种意义上是数据缓冲区,而 List 的语义通常使其成为数据存储;没有什么能阻止您使用 List 来实现 StackQueue

关于java - 为什么 Stack 是一个类而 Queue 是一个接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6714571/

相关文章:

java - "Package has incorrect spelling" eclipse

algorithm - Java中队列实现的最快方法

java - 显示堆栈内容时出现问题

SWIFT - OperationQueue.main.addOperation 和 DispatchQueue.main.async 之间有什么区别?

java - 关闭 AbstractJmsListeningContainer 的最佳方法?

java - JPanels : One with a JTextArea and another with a JLabel

java - 如何在不先将它们附加到 StringBuilder 的情况下从一堆字符串中创建一个读取器?

java - JPA 中绝对需要列注释吗?

c - C中栈的高效实现

c# - 在堆栈中查找最长的字符序列