我对LinkedList感到困惑。它们对我来说真的没有意义。有人可以向我解释它是如何运作的。例如,我看到了这个代码(下面),它对我没有意义。从我猜测的是,创建了一个字符串列表(list1)并将其放入LinkedList中。但是list和LinkedList之间的差异是什么?感谢
List<String>list1 = new LinkedList<String>()
答案 0 :(得分:2)
LinkedList是一个实现List接口的类。接口不是实际的类,它更像是实现它们的类需要公开的方法的约定/蓝图。
例如,如果您有名为Shape
的界面interface Shape() {
public void draw();
}
注意这包含了一个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方法。
答案 1 :(得分:2)
此行为列表界面分配一个空LinkedList
对象以包含String
列表界面的想法是,您稍后可以通过LinkedList
更换ArrayList
以更改代码的其余部分
E.g:
List<String> list1 = new ArrayList<String>();
list.add("element1");
list.add()适用于ArrayList
和LinkedList
两者,这就是List Interface
的目的
答案 2 :(得分: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的一些特征:
答案 3 :(得分:1)
LinkiedList
实现List接口,因此LinkedList
是List。
这是LinkedList
类的定义:
public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, Serializable
如您所见,LinkedList
class实现了List接口。
因此,由于LinkedList
是List(或者不完全是List bot的子代),因此您可以使用多态来实例化List对象,就像您所说的那样。 List接口说明实现此接口的类的行为,在本例中为LinkedList
。请记住,接口就像是一个契约,所以A * LL确定的方法 * LinkedList class
中的列表界面必须实现。这样,List接口与LinkedList
类具有相同的方法。
答案 4 :(得分:0)
我认为令人困惑的是使用泛型。
这里没有泛型:
List list1 = new LinkedList();
这是非常简单的Java代码。我们正在创建一个LinkedList对象并将其分配给List类型的变量。 LinkedList实现了List接口,因此可以正常工作。
现在让我们添加泛型:
List<String>list1 = new LinkedList<String>();
所有不同之处在于您要指定LinkedList将包含的内容。
在列表中添加内容:
list1.add("Something in my linked list");