<分区>
我觉得它们很相似...什么时候我们需要使用堆栈或队列,为什么不直接使用 ArrayList 或 LinkedList 来代替它们呢?
<分区>
我觉得它们很相似...什么时候我们需要使用堆栈或队列,为什么不直接使用 ArrayList 或 LinkedList 来代替它们呢?
最佳答案
Stack
,是从Vector
派生的对象的后进先出堆栈,也是一个类。 Vector
与 Java 最初附带的“旧”集合集一起使用,并最终派生自 AbstractCollection
。值得注意的是,确实有一个 Stack
的规范实现; Queue
和 List
有许多众所周知的实现,如果选择正确,它们可以产生显着的性能差异。
Queue
遵循当今通常使用的"new"集合集合中的 Collection
接口(interface),因此它遵循这些接口(interface)并带有各种的实现。
Stack
应在需要 LIFO 语义时使用,而 Queue
应在需要 First-In-First-Out 语义时使用。
ArrayList
和 LinkedList
存储有序事物的集合,并且不符合 Stack< 的用例
或 Queue
直接。 Stack
和 Queue
在某种意义上是数据缓冲区,而 List
的语义通常使其成为数据存储;没有什么能阻止您使用 List
来实现 Stack
或 Queue
。
关于java - 为什么 Stack 是一个类而 Queue 是一个接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6714571/