2

我对 LinkedList 感到困惑。它们对我来说真的没有意义。有人可以向我解释它基本上是如何工作的。例如,我看到了这段代码(如下),这对我来说没有意义。根据我的猜测,创建了一个字符串列表(list1)并将其放入 LinkedList 中。但是 list 和 LinkedList 之间有什么区别?谢谢

List<String>list1 = new LinkedList<String>() 
4

5 回答 5

2

LinkedList 是一个实现 List 接口的类。接口不是实际的类,它更像是实现它们的类需要公开哪些方法的约定/蓝图。

例如,如果您有名为 Shape 的接口

interface Shape() {
     public void draw(); 
}

请注意,这包含一个用于绘制的方法体,而是一个约定,即所有实现此接口的类都必须有一个名为 draw 的方法。现在,假设您有两个类都实现了上述接口

class Box implements Shape {
    public void draw() {
        //do actual drawing in this method body
    }
}

class Circle implements Shape {
    public void draw() {
        //do actual drawing in this method body
    }
}

然后,您可以将 Circle 或 Box 的实例转换为 Shape 变量,并安全地调用 draw 方法。

于 2012-12-03T21:08:24.683 回答
2

这一行将一个空LinkedList对象分配String 给 List 接口。
List 接口的想法是,您以后可以在无需更改其余代码的情况LinkedList下进行交换ArrayList

例如:

List<String> list1 = new ArrayList<String>();

list.add("element1");

list.add() 适用于 forArrayList和 for LinkedList,这就是List Interface

于 2012-12-03T21:13:31.460 回答
1

java.util.List是一个接口,java.util.LinkedList是实现的类List interface

List<String>list1 = new LinkedList<String>();
SuperClass(Class or interface) ref= new SubClass(Implementing class/concrete class)

以上是创建LinkedList的多态方式。

以下是 List 的一些特征:

  1. 接受重复
  2. 可以使用索引访问。
  3. 维护广告订单
于 2012-12-03T21:08:17.740 回答
1

LinkiedList实现 List 接口,ListLinkedList也是如此。

这是LinkedList类的定义:

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

如您所见,LinkedList该类实现了 List 接口。

Therefore, as LinkedList is a List (or a child of List bot not exactly), you can use polymorphism to instantiate a List object like you are saying. The List interface say the behavior of the class that implement this interface, in this case LinkedList. Remember that the Interfaces are like a contract, so A*LL THE METHODS THAT ARE DEFINIED IN* List interface MUST BE IMPLEMENTED in the LinkedList class. In that way List interface has the same methods as the LinkedList class.

于 2012-12-03T21:38:07.123 回答
0

我认为让您感到困惑的是泛型的使用。

这里没有泛型:

List list1 = new LinkedList();

这是非常简单的 Java 代码。我们正在创建一个 LinkedList 对象并将其分配给 List 类型的变量。LinkedList 实现了 List 接口,因此可以正常工作。

现在让我们重新添加泛型:

List<String>list1 = new LinkedList<String>();

不同之处在于您指定了 LinkedList 将包含的内容。

将某些内容放入列表中:

list1.add("Something in my linked list");
于 2012-12-03T21:18:05.813 回答