【问题标题】:LinkedList different implementationsLinkedList 不同的实现
【发布时间】:2014-03-11 08:40:08
【问题描述】:

我在 Java 中的 Collections Framework 中看到了 2 个 LinkedList 类的有效声明。

  1. LinkedList a = new LinkedList();
  2. 队列 a = new LinkedList();

这两种实现之间到底有什么区别?

【问题讨论】:

    标签: java collections linked-list queue


    【解决方案1】:

    QueueLinkedList类实现的接口。

    在您的第一种情况下,您 a 是对 LinkedList 对象的 LinkedList 引用。 在后者中,a 是一个指向 LinkedList 对象的 Queue 接口引用,因此,在最后一种情况下,您将只能执行 LinkedList 中包含的那些服务队列接口。

    【讨论】:

    • Queue 由 Deque 扩展,该接口最终由 LinkedList 实现
    • @Youngistan 我认为这与 LinkedList 最终实现队列服务这一事实并不矛盾。
    • 是的,我没有说你的回答不正确。只需添加完整层次结构的评论
    【解决方案2】:

    您的代码中只有一个实现:LinkedList。

    QueueLinkedList 类实现的多个接口之一。

    【讨论】:

      【解决方案3】:

      下面是LinkedList的代码

      public class LinkedList<E> extends AbstractSequentialList<E>
        implements List<E>, Deque<E>, Cloneable, Serializable
      

      所以你可以看到这个类实现了Deque&lt;E&gt;等等这个接口扩展了Queue&lt;E&gt; 接口,以便您可以创建如下对象:

      Queue B = new LinkedList(); 
      Deque d = new LinkedList(); 
      

      上面声明中的LinkedList对象被Queue接口引用,这意味着你可以调用Queue中声明的所有方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-04-16
        • 2012-11-15
        • 2016-11-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-22
        相关资源
        最近更新 更多