类的关系
首先两者都实现了List, Cloneable以及Serializable接口,而不同的是LinkedList另外实现了Deque接口,所以它还可以当队列使用;而ArrayList还实现了RandomAccess接口。
RandomAccess接口只是一个标记,它里面没有任何的方法,只是让能够实现快速访问的类实现这个接口。
快速访问就是直接根据下标拿到数据,类似于obj[index]。
这一点在get()方法上有所体现。
类的属性
LinkedList
该类重要的属性就是三个字段,分别是:
transient int size = 0;
/**
* Pointer to first node.
*/
transient Node<E> first;
/**
* Pointer to last node.
*/
transient Node<E> last;
第一个字段记录大小,后两个即是头指针和尾指针。
Node是一个双向链表的形式:
private static class Node<E> {
E item;
Node<E> next;
Node<E> prev;
Node(Node<E> prev, E element, Node<E> next) {
this.item = element;
this.next = next;
this.prev = prev;
}
}
对于链表的基本操作,无论是直接调用add(),还是add(int,E),还是addFirst()