一、类继承关系
LinkedList和ArrayList都实现了List接口。所以有List的特性,同时LinkedList也实现了Deque,所以它也具有双端队列和栈的特性。
public class LinkedList
extends AbstractSequentialList
implements List, Deque, Cloneable, java.io.Serializable
二、类属性
//实际元素个数
transient int size = 0;
//头结点
transient Node first;
//尾结点
transient Node last;
transient表示该域不能被序列化。first,last初始值都是null.
这里有一个内部类Node:
private static class Node {
//数据
E item;
//后继
Node next;
//前驱
Node prev;
Node(Node prev, E element, Node next) {
this.item = element;
this.next = next;
this.prev = prev;
}
}
三、构造函数
public LinkedList() {
}
public LinkedList(Collection extends E> c) {
this();
addAll(c);
}
LinkedList内部的数据结构是一个双向链表,所以不会有ArrayList那样的指定容量构造器。
四、LinkedList如何扩容
LinkedList内部的数据结构是一个双向链表,既没有初始化大小,也没有扩容机制一说。其大小是需要时才会分配,不需要分配多余的。
五、主要函数
add(E e) 函数
public boolean add(E e) {