java.util 包 - 类与接口(interface)

标签 java interface stack queue

为什么是Queue一个界面,但其他人喜欢StackArrayList是类?

我知道创建接口(interface)是为了让客户可以实现它们并添加他们自己的方法,而对于类,如果每个客户都需要他们的方法,它将变得庞大而臃肿。

...还是我在这里遗漏了什么?

最佳答案

Queue 可以用多种方式实现,ListSet 也可以。它们都只是为不同类型的集合指定一个契约。

然而,ArrayListList 的特定实现,用于在内部使用数组来存储元素。 LinkedList 也是 List 的一个实现,它使用一系列相互连接的节点,即 doubly linked list。 .同样,TreeSetHashMap 分别是集合和映射的特定实现。

现在,Stack 在这里是一个奇怪的例子,特别是因为它是旧版本 Java 的遗留类。你真的不应该再使用 Stack 了;相反,您应该使用其现代等效项 ArrayDeque . ArrayDequeDeque(双端队列)的实现,它在内部使用数组进行存储(这正是 Stack 所做的) ). Deque 支持 Stack 的所有操作,如 poppush 等。 的其他实现code>Deque 包括 LinkedList,正如其他人所提到的,尽管这与 Stack 不同,因为它底层不是数组,而是双向链表:-p

现在,有很多Queue 的实现,以及许多不同类型的Queue。你不仅有 BlockingQueue(通常用于生产者-消费者),其常见实现包括 LinkedBlockingQueueArrayBlockingQueue,还有 TransferQueue 等等。我离题了……您可以在相关的 Java Tutorial 中阅读有关集合 API 的更多信息。 .

关于java.util 包 - 类与接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12238678/

相关文章:

Java - 检查带有附加 '&' 字符的匹配括号

java - GridBagLayout 面板对齐

Java 对象字段值取决于其他字段 - 最佳实践模式?

c#:继承/接口(interface)静态成员?

html - 为什么DOM中Attr继承自Node?

stack - 在 O(1) 中实现堆栈(push、pop 和 findmin)

java - Gradle:将多项目依赖项压缩到应用程序JAR文件中?

Java <key, value> 集合在 O(1) 或 O(log(n)) 最坏情况下检索最小元素

c# - 任何人都可以帮我解决有关 C# 中的接口(interface)的问题

java - 什么是 "Stack Walking"