【发布时间】:2014-03-11 08:40:08
【问题描述】:
我在 Java 中的 Collections Framework 中看到了 2 个 LinkedList 类的有效声明。
- LinkedList a = new LinkedList();
- 队列 a = new LinkedList();
这两种实现之间到底有什么区别?
【问题讨论】:
标签: java collections linked-list queue
我在 Java 中的 Collections Framework 中看到了 2 个 LinkedList 类的有效声明。
这两种实现之间到底有什么区别?
【问题讨论】:
标签: java collections linked-list queue
Queue是LinkedList类实现的接口。
在您的第一种情况下,您 a 是对 LinkedList 对象的 LinkedList 引用。 在后者中,a 是一个指向 LinkedList 对象的 Queue 接口引用,因此,在最后一种情况下,您将只能执行 LinkedList 中包含的那些服务队列接口。
【讨论】:
您的代码中只有一个实现:LinkedList。
Queue 是LinkedList 类实现的多个接口之一。
【讨论】:
下面是LinkedList的代码
public class LinkedList<E> extends AbstractSequentialList<E>
implements List<E>, Deque<E>, Cloneable, Serializable
所以你可以看到这个类实现了Deque<E>等等这个接口扩展了Queue<E>
接口,以便您可以创建如下对象:
Queue B = new LinkedList();
Deque d = new LinkedList();
上面声明中的LinkedList对象被Queue接口引用,这意味着你可以调用Queue中声明的所有方法。
【讨论】: