首先看看LinkedList與Collection的關(guān)系:
LinkedList的繼承關(guān)系如下:
首先看看LinkedList與Collection的關(guān)系:
java.lang.Object
? java.util.AbstractCollection<E>
? java.util.AbstractList<E>
? java.util.AbstractSequentialList<E>
? java.util.LinkedList<E>
public class LinkedList<E>
extends AbstractSequentialList<E>
implements List<E>, Deque<E>, Cloneable, java.io.Serializable {}
inkedList是一個(gè)繼承與AbatractSequentialList的雙向鏈表佃扼。它也可以被當(dāng)作堆棧四敞、隊(duì)列或雙端隊(duì)列進(jìn)行操作阅懦。
LinkedList實(shí)現(xiàn)了List接口,能對(duì)它進(jìn)行隊(duì)列操作腋舌。
LinkedList實(shí)現(xiàn)了Deque接口萧求,即能將LinkedList當(dāng)作雙端隊(duì)列使用救斑。
LinkedList實(shí)現(xiàn)了java.io.Serializable接口,這意味著LinkedList支持序列化,能通過(guò)序列化去傳輸监婶。
LinkedList是非同步的。
LinkedList就是一個(gè)雙向鏈表,基本數(shù)據(jù)結(jié)構(gòu)如下:
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;
}
}
總結(jié)一下:
1). LinkedList是通過(guò)雙向鏈表去實(shí)現(xiàn)的燥爷。
2). 從LinkedList的實(shí)現(xiàn)方式中可以看出,它不存在容量不足的問題懦窘,因?yàn)槭擎湵怼?br>
3). LinkedList實(shí)現(xiàn)java.io.Serializable的方式前翎。當(dāng)寫入到輸出流時(shí),先寫入“容量”畅涂,再依次寫出“每一個(gè)元素”港华;當(dāng)讀出輸入流時(shí),先讀取“容量”午衰,再依次讀取“每一個(gè)元素”立宜。
4). LinkdedList的克隆函數(shù),即是將全部元素克隆到一個(gè)新的LinkedList中臊岸。
5). 由于LinkedList實(shí)現(xiàn)了Deque橙数,而Deque接口定義了在雙端隊(duì)列兩端訪問元素的方法。提供插入帅戒、移除和檢查元素的方法商模。
6). LinkedList可以作為FIFO(先進(jìn)先出)的隊(duì)列,作為FIFO的隊(duì)列時(shí),下標(biāo)的方法等價(jià):
隊(duì)列方法 等效方法
add(e) addLast(e)
offer(e) offerLast(e)
remove() removeFirst()
poll() pollFirst()
element() getFirst()
peek() peekFirst()
7).LinkedList可以作為L(zhǎng)IFO(后進(jìn)先出)的棧施流,作為L(zhǎng)IFO的棧時(shí)响疚,下表的方法等價(jià):
棧方法 等效方法
push(e) addFirst(e)
pop() removeFirst()
peek() peekFirst()