JavaTM 2 Platform
Standard Ed. 6

java.util
類別 LinkedList<E>

java.lang.Object
  繼承者 java.util.AbstractCollection<E>
      繼承者 java.util.AbstractList<E>
          繼承者 java.util.AbstractSequentialList<E>
              繼承者 java.util.LinkedList<E>
型別參數:
E - 在此 collection 中保持的元素的型別
所有已實作的介面:
Serializable, Cloneable, Iterable<E>, Collection<E>, Deque<E>, List<E>, Queue<E>

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

List 介面的連接列表實作。實作所有可選的列表操作,並且允許所有元素(包括 null)。除了實作 List 介面外,LinkedList 類別還為在列表的開頭及結尾 getremoveinsert 元素提供了統一的命名方法。這些操作允許將連接列表用作堆疊(stack)空間、佇列雙端佇列

此類別實作 Deque 介面,為 addpoll 提供先進先出佇列操作,以及其他堆疊(stack)空間和雙端佇列操作。

所有操作都是按照雙重連接列表的需要執行的。在列表中編索引的操作將從開頭或結尾遍歷列表(從靠近指定索引的一端)。

注意,此實作不是同步的。如果多個執行緒同時存取一個連接列表,而其中至少一個執行緒從結構上修改了該列表,則它必須 保持外部同步。(結構修改指添加或刪除一個或多個元素的任何操作;僅設置元素的值不是結構修改。)這一般通過對自然封裝該列表的物件進行同步操作來完成。如果不存在這樣的物件,則應該使用 Collections.synchronizedList 方法來“包裹”該列表。最好在創建時完成這一操作,以防止對列表進行意外的不同步存取,如下所示:

   List list = Collections.synchronizedList(new LinkedList(...));

此類別的 iteratorlistIterator 方法返回的迭代器是快速失敗 的:在迭代器創建之後,如果從結構上對列表進行修改,除非通過迭代器自身的 removeadd 方法,其他任何時間任何方式的修改,迭代器都將拋出 ConcurrentModificationException。因此,面對共時的修改,迭代器很快就會完全失敗,而不冒將來不確定的時間任意發生不確定行為的風險。

注意,迭代器的快速失敗行為不能得到保證,一般來說,存在不同步的共時修改時,不可能作出任何硬性保證。快速失敗迭代器盡最大努力拋出 ConcurrentModificationException。因此,編寫依賴於此異常的程序的方式是錯誤的,正確做法是:迭代器的快速失敗行為應該僅用於檢測程序錯誤。

此類別是 Java Collections Framework 的成員。

從以下版本開始:
1.2
另請參見:
List, ArrayList, Vector, 序列化表格

欄位摘要
 
從類別 java.util.AbstractList 繼承的欄位
modCount
 
建構子摘要
LinkedList()
          建構一個空列表。
LinkedList(Collection<? extends E> c)
          建構一個套件含指定 collection 中的元素的列表,這些元素按其 collection 的迭代器返回的順序排列。
 
方法摘要
 boolean add(E e)
          將指定元素添加到此列表的結尾。
 void add(int index, E element)
          在此列表中指定的位置插入指定的元素。
 boolean addAll(Collection<? extends E> c)
          添加指定 collection 中的所有元素到此列表的結尾,順序是指定 collection 的迭代器返回這些元素的順序。
 boolean addAll(int index, Collection<? extends E> c)
          將指定 collection 中的所有元素從指定位置開始插入此列表。
 void addFirst(E e)
          將指定元素插入此列表的開頭。
 void addLast(E e)
          將指定元素添加到此列表的結尾。
 void clear()
          從此列表中移除所有元素。
 Object clone()
          返回此 LinkedList 的淺表副本。
 boolean contains(Object o)
          如果此列表包含指定元素,則返回 true
 Iterator<E> descendingIterator()
          返回以逆向順序在此雙端佇列的元素上進行迭代的迭代器。
 E element()
          獲取但不移除此列表的頭(第一個元素)。
 E get(int index)
          返回此列表中指定位置處的元素。
 E getFirst()
          返回此列表的第一個元素。
 E getLast()
          返回此列表的最後一個元素。
 int indexOf(Object o)
          返回此列表中首次出現的指定元素的索引,如果此列表中不包含該元素,則返回 -1。
 int lastIndexOf(Object o)
          返回此列表中最後出現的指定元素的索引,如果此列表中不包含該元素,則返回 -1。
 ListIterator<E> listIterator(int index)
          返回此列表中的元素的列表迭代器(按適當順序),從列表中指定位置開始。
 boolean offer(E e)
          將指定元素添加到此列表的末尾(最後一個元素)。
 boolean offerFirst(E e)
          在此列表的開頭插入指定的元素。
 boolean offerLast(E e)
          在此列表末尾插入指定的元素。
 E peek()
          獲取但不移除此列表的頭(第一個元素)。
 E peekFirst()
          獲取但不移除此列表的第一個元素;如果此列表為空,則返回 null
 E peekLast()
          獲取但不移除此列表的最後一個元素;如果此列表為空,則返回 null
 E poll()
          獲取並移除此列表的頭(第一個元素)
 E pollFirst()
          獲取並移除此列表的第一個元素;如果此列表為空,則返回 null
 E pollLast()
          獲取並移除此列表的最後一個元素;如果此列表為空,則返回 null
 E pop()
          從此列表所表示的堆疊(stack)空間處彈出一個元素。
 void push(E e)
          將元素推入此列表所表示的堆疊(stack)空間。
 E remove()
          獲取並移除此列表的頭(第一個元素)。
 E remove(int index)
          移除此列表中指定位置處的元素。
 boolean remove(Object o)
          從此列表中移除首次出現的指定元素(如果存在)。
 E removeFirst()
          移除並返回此列表的第一個元素。
 boolean removeFirstOccurrence(Object o)
          從此列表中移除第一次出現的指定元素(從頭部到尾部遍歷列表時)。
 E removeLast()
          移除並返回此列表的最後一個元素。
 boolean removeLastOccurrence(Object o)
          從此列表中移除最後一次出現的指定元素(從頭部到尾部遍歷列表時)。
 E set(int index, E element)
          將此列表中指定位置的元素替換為指定的元素。
 int size()
          返回此列表的元素數。
 Object[] toArray()
          返回以適當順序(從第一個元素到最後一個元素)包含此列表中所有元素的陣列。
<T> T[]
toArray(T[] a)
          返回以適當順序(從第一個元素到最後一個元素)包含此列表中所有元素的陣列;返回陣列的運行時型別為指定陣列的型別。
 
從類別 java.util.AbstractSequentialList 繼承的方法
iterator
 
從類別 java.util.AbstractList 繼承的方法
equals, hashCode, listIterator, removeRange, subList
 
從類別 java.util.AbstractCollection 繼承的方法
containsAll, isEmpty, removeAll, retainAll, toString
 
從類別 java.lang.Object 繼承的方法
finalize, getClass, notify, notifyAll, wait, wait, wait
 
從介面 java.util.List 繼承的方法
containsAll, equals, hashCode, isEmpty, iterator, listIterator, removeAll, retainAll, subList
 
從介面 java.util.Deque 繼承的方法
iterator
 

建構子詳細資訊

LinkedList

public LinkedList()
建構一個空列表。


LinkedList

public LinkedList(Collection<? extends E> c)
建構一個套件含指定 collection 中的元素的列表,這些元素按其 collection 的迭代器返回的順序排列。

參數:
c - 要將其元素放入此列表的 collection
拋出:
NullPointerException - 如果指定的 collection 為 null
方法詳細資訊

getFirst

public E getFirst()
返回此列表的第一個元素。

指定者:
介面 Deque<E> 中的 getFirst
返回:
此列表的第一個元素
拋出:
NoSuchElementException - 如果此列表為空

getLast

public E getLast()
返回此列表的最後一個元素。

指定者:
介面 Deque<E> 中的 getLast
返回:
此列表的最後一個元素
拋出:
NoSuchElementException - 如果此列表為空

removeFirst

public E removeFirst()
移除並返回此列表的第一個元素。

指定者:
介面 Deque<E> 中的 removeFirst
返回:
此列表的第一個元素
拋出:
NoSuchElementException - 如果此列表為空

removeLast

public E removeLast()
移除並返回此列表的最後一個元素。

指定者:
介面 Deque<E> 中的 removeLast
返回:
此列表的最後一個元素
拋出:
NoSuchElementException - 如果此列表為空

addFirst

public void addFirst(E e)
將指定元素插入此列表的開頭。

指定者:
介面 Deque<E> 中的 addFirst
參數:
e - 要添加的元素

addLast

public void addLast(E e)
將指定元素添加到此列表的結尾。

此方法等效於 add(E)

指定者:
介面 Deque<E> 中的 addLast
參數:
e - 要添加的元素

contains

public boolean contains(Object o)
如果此列表包含指定元素,則返回 true。更確切地講,當且僅當此列表包含至少一個滿足 (o==null ? e==null : o.equals(e)) 的元素 e 時返回 true

指定者:
介面 Collection<E> 中的 contains
指定者:
介面 Deque<E> 中的 contains
指定者:
介面 List<E> 中的 contains
覆寫:
類別 AbstractCollection<E> 中的 contains
參數:
o - 要測試在此列表中是否存在的元素
返回:
如果此列表包含指定元素,則返回 true

size

public int size()
返回此列表的元素數。

指定者:
介面 Collection<E> 中的 size
指定者:
介面 Deque<E> 中的 size
指定者:
介面 List<E> 中的 size
指定者:
類別 AbstractCollection<E> 中的 size
返回:
此列表的元素數

add

public boolean add(E e)
將指定元素添加到此列表的結尾。

此方法等效於 addLast(E)

指定者:
介面 Collection<E> 中的 add
指定者:
介面 Deque<E> 中的 add
指定者:
介面 List<E> 中的 add
指定者:
介面 Queue<E> 中的 add
覆寫:
類別 AbstractList<E> 中的 add
參數:
e - 要添加到此列表的元素
返回:
true(根據 Collection.add(E) 的規定)

remove

public boolean remove(Object o)
從此列表中移除首次出現的指定元素(如果存在)。如果列表不包含該元素,則不作更改。更確切地講,移除具有滿足 (o==null ? get(i)==null : o.equals(get(i))) 的最低索引 i 的元素(如果存在這樣的元素)。如果此列表已包含指定元素(或者此列表由於調用而發生更改),則返回 true

指定者:
介面 Collection<E> 中的 remove
指定者:
介面 Deque<E> 中的 remove
指定者:
介面 List<E> 中的 remove
覆寫:
類別 AbstractCollection<E> 中的 remove
參數:
o - 要從此列表刪除的元素,如果存在
返回:
如果此列表包含指定元素,則返回 true

addAll

public boolean addAll(Collection<? extends E> c)
添加指定 collection 中的所有元素到此列表的結尾,順序是指定 collection 的迭代器返回這些元素的順序。如果指定的 collection 在操作過程中被修改,則此操作的行為是不確定的。(注意,如果指定 collection 就是此列表並且非空(null),則此操作的行為是不確定的。)

指定者:
介面 Collection<E> 中的 addAll
指定者:
介面 List<E> 中的 addAll
覆寫:
類別 AbstractCollection<E> 中的 addAll
參數:
c - 套件含要添加到此列表的元素的 collection
返回:
如果此列表由於調用而更改,則返回 true
拋出:
NullPointerException - 如果指定的 collection 為 null
另請參見:
AbstractCollection.add(Object)

addAll

public boolean addAll(int index,
                      Collection<? extends E> c)
將指定 collection 中的所有元素從指定位置開始插入此列表。移動當前在該位置上的元素(如果有),所有後續元素都向右移(增加其索引)。新元素將按由指定 collection 的迭代器返回的順序在列表中顯示。

指定者:
介面 List<E> 中的 addAll
覆寫:
類別 AbstractSequentialList<E> 中的 addAll
參數:
index - 在其中插入指定 collection 中第一個元素的索引
c - 套件含要添加到此列表的元素的 collection
返回:
如果此列表由於調用而更改,則返回 true
拋出:
IndexOutOfBoundsException - 如果索引超出範圍 (index < 0 || index > size())
NullPointerException - 如果指定的 collection 為 null

clear

public void clear()
從此列表中移除所有元素。

指定者:
介面 Collection<E> 中的 clear
指定者:
介面 List<E> 中的 clear
覆寫:
類別 AbstractList<E> 中的 clear

get

public E get(int index)
返回此列表中指定位置處的元素。

指定者:
介面 List<E> 中的 get
覆寫:
類別 AbstractSequentialList<E> 中的 get
參數:
index - 要返回的元素的索引
返回:
列表中指定位置的元素
拋出:
IndexOutOfBoundsException - 如果索引超出範圍 (index < 0 || index >= size())

set

public E set(int index,
             E element)
將此列表中指定位置的元素替換為指定的元素。

指定者:
介面 List<E> 中的 set
覆寫:
類別 AbstractSequentialList<E> 中的 set
參數:
index - 要替換的元素的索引
element - 要在指定位置存儲的元素
返回:
以前在指定位置的元素
拋出:
IndexOutOfBoundsException - 如果索引超出範圍 (index < 0 || index >= size())

add

public void add(int index,
                E element)
在此列表中指定的位置插入指定的元素。移動當前在該位置處的元素(如果有),所有後續元素都向右移(在其索引中添加 1)。

指定者:
介面 List<E> 中的 add
覆寫:
類別 AbstractSequentialList<E> 中的 add
參數:
index - 要在其中插入指定元素的索引
element - 要插入的元素
拋出:
IndexOutOfBoundsException - 如果索引超出範圍 (index < 0 || index > size())

remove

public E remove(int index)
移除此列表中指定位置處的元素。將任何後續元素向左移(從索引中減 1)。返回從列表中刪除的元素。

指定者:
介面 List<E> 中的 remove
覆寫:
類別 AbstractSequentialList<E> 中的 remove
參數:
index - 要移除的元素的索引
返回:
以前在指定位置的元素
拋出:
IndexOutOfBoundsException - 如果索引超出範圍 (index < 0 || index >= size())

indexOf

public int indexOf(Object o)
返回此列表中首次出現的指定元素的索引,如果此列表中不包含該元素,則返回 -1。更確切地講,返回滿足 (o==null ? get(i)==null : o.equals(get(i))) 的最低索引 i;如果沒有此索引,則返回 -1。

指定者:
介面 List<E> 中的 indexOf
覆寫:
類別 AbstractList<E> 中的 indexOf
參數:
o - 要搜尋的元素
返回:
此列表中首次出現的指定元素的索引,如果此列表中不包含該元素,則返回 -1

lastIndexOf

public int lastIndexOf(Object o)
返回此列表中最後出現的指定元素的索引,如果此列表中不包含該元素,則返回 -1。更確切地講,返回滿足 (o==null ? get(i)==null : o.equals(get(i))) 的最高索引 i;如果沒有此索引,則返回 -1。

指定者:
介面 List<E> 中的 lastIndexOf
覆寫:
類別 AbstractList<E> 中的 lastIndexOf
參數:
o - 要搜尋的元素
返回:
此列表中最後出現的指定元素的索引;如果此列表中不包含該元素,則返回 -1

peek

public E peek()
獲取但不移除此列表的頭(第一個元素)。

指定者:
介面 Deque<E> 中的 peek
指定者:
介面 Queue<E> 中的 peek
返回:
此列表的頭,如果此列表為空,則返回 null
從以下版本開始:
1.5

element

public E element()
獲取但不移除此列表的頭(第一個元素)。

指定者:
介面 Deque<E> 中的 element
指定者:
介面 Queue<E> 中的 element
返回:
列表的頭
拋出:
NoSuchElementException - 如果此列表為空
從以下版本開始:
1.5

poll

public E poll()
獲取並移除此列表的頭(第一個元素)

指定者:
介面 Deque<E> 中的 poll
指定者:
介面 Queue<E> 中的 poll
返回:
此列表的頭,如果此列表為空,則返回 null
從以下版本開始:
1.5

remove

public E remove()
獲取並移除此列表的頭(第一個元素)。

指定者:
介面 Deque<E> 中的 remove
指定者:
介面 Queue<E> 中的 remove
返回:
列表的頭
拋出:
NoSuchElementException - 如果此列表為空
從以下版本開始:
1.5

offer

public boolean offer(E e)
將指定元素添加到此列表的末尾(最後一個元素)。

指定者:
介面 Deque<E> 中的 offer
指定者:
介面 Queue<E> 中的 offer
參數:
e - 要添加的元素
返回:
true(根據 Queue.offer(E) 的規定)
從以下版本開始:
1.5

offerFirst

public boolean offerFirst(E e)
在此列表的開頭插入指定的元素。

指定者:
介面 Deque<E> 中的 offerFirst
參數:
e - 要插入的元素
返回:
true(根據 Deque.offerFirst(E) 的規定)
從以下版本開始:
1.6

offerLast

public boolean offerLast(E e)
在此列表末尾插入指定的元素。

指定者:
介面 Deque<E> 中的 offerLast
參數:
e - 要插入的元素
返回:
true(根據 Deque.offerLast(E) 的規定)
從以下版本開始:
1.6

peekFirst

public E peekFirst()
獲取但不移除此列表的第一個元素;如果此列表為空,則返回 null

指定者:
介面 Deque<E> 中的 peekFirst
返回:
此列表的第一個元素;如果此列表為空,則返回 null
從以下版本開始:
1.6

peekLast

public E peekLast()
獲取但不移除此列表的最後一個元素;如果此列表為空,則返回 null

指定者:
介面 Deque<E> 中的 peekLast
返回:
此列表的最後一個元素;如果此列表為空,則返回 null
從以下版本開始:
1.6

pollFirst

public E pollFirst()
獲取並移除此列表的第一個元素;如果此列表為空,則返回 null

指定者:
介面 Deque<E> 中的 pollFirst
返回:
此列表的第一個元素;如果此列表為空,則返回 null
從以下版本開始:
1.6

pollLast

public E pollLast()
獲取並移除此列表的最後一個元素;如果此列表為空,則返回 null

指定者:
介面 Deque<E> 中的 pollLast
返回:
此列表的最後一個元素;如果此列表為空,則返回 null
從以下版本開始:
1.6

push

public void push(E e)
將元素推入此列表所表示的堆疊(stack)空間。換句話說,將該元素插入此列表的開頭。

此方法等效於 addFirst(E)

指定者:
介面 Deque<E> 中的 push
參數:
e - 要推入的元素
從以下版本開始:
1.6

pop

public E pop()
從此列表所表示的堆疊(stack)空間處彈出一個元素。換句話說,移除並返回此列表的第一個元素。

此方法等效於 removeFirst()

指定者:
介面 Deque<E> 中的 pop
返回:
此列表開頭的元素(它是此列表所表示的堆疊(stack)空間的頂部)
拋出:
NoSuchElementException - 如果此列表為空
從以下版本開始:
1.6

removeFirstOccurrence

public boolean removeFirstOccurrence(Object o)
從此列表中移除第一次出現的指定元素(從頭部到尾部遍歷列表時)。如果列表不包含該元素,則不作更改。

指定者:
介面 Deque<E> 中的 removeFirstOccurrence
參數:
o - 要從此列表中移除的元素(如果存在)
返回:
如果該列表已包含指定元素,則返回 true
從以下版本開始:
1.6

removeLastOccurrence

public boolean removeLastOccurrence(Object o)
從此列表中移除最後一次出現的指定元素(從頭部到尾部遍歷列表時)。如果列表不包含該元素,則不作更改。

指定者:
介面 Deque<E> 中的 removeLastOccurrence
參數:
o - 要從此列表中移除的元素(如果存在)
返回:
如果該列表已包含指定元素,則返回 true
從以下版本開始:
1.6

listIterator

public ListIterator<E> listIterator(int index)
返回此列表中的元素的列表迭代器(按適當順序),從列表中指定位置開始。遵守 List.listIterator(int) 的常規協定。

列表迭代器是快速失敗 的:在迭代器創建之後,如果從結構上對列表進行修改,除非通過列表迭代器自身的 removeadd 方法,其他任何時間任何方式的修改,列表迭代器都將拋出 ConcurrentModificationException。因此,面對共時的修改,迭代器很快就會完全失敗,而不冒將來不確定的時間任意發生不確定行為的風險。

指定者:
介面 List<E> 中的 listIterator
指定者:
類別 AbstractSequentialList<E> 中的 listIterator
參數:
index - 要從列表迭代器返回的第一個元素的索引(通過調用 next 方法)
返回:
此列表中的元素的 ListIterator(按適當順序),從列表中指定位置開始
拋出:
IndexOutOfBoundsException - 如果索引超出範圍 (index < 0 || index > size())
另請參見:
List.listIterator(int)

descendingIterator

public Iterator<E> descendingIterator()
從介面 Deque 複製的描述
返回以逆向順序在此雙端佇列的元素上進行迭代的迭代器。元素將按從最後一個(尾部)到第一個(頭部)的順序返回。

指定者:
介面 Deque<E> 中的 descendingIterator
返回:
以逆向順序在此雙端佇列中的元素上進行迭代的迭代器
從以下版本開始:
1.6

clone

public Object clone()
返回此 LinkedList 的淺表副本。(這些元素本身沒有複製。)

覆寫:
類別 Object 中的 clone
返回:
LinkedList 實例的淺表副本
另請參見:
Cloneable

toArray

public Object[] toArray()
返回以適當順序(從第一個元素到最後一個元素)包含此列表中所有元素的陣列。

由於此列表不維護對返回陣列的任何參考,因而它將是「安全的」。(換句話說,此方法必須分派一個新陣列)。因此,調用者可以隨意修改返回的陣列。

此方法充當基於陣列的 API 與基於 collection 的 API 之間的橋樑。

指定者:
介面 Collection<E> 中的 toArray
指定者:
介面 List<E> 中的 toArray
覆寫:
類別 AbstractCollection<E> 中的 toArray
返回:
以適當順序包含此列表中所有元素的陣列。
另請參見:
Arrays.asList(Object[])

toArray

public <T> T[] toArray(T[] a)
返回以適當順序(從第一個元素到最後一個元素)包含此列表中所有元素的陣列;返回陣列的運行時型別為指定陣列的型別。如果指定陣列能容納列表,則在其中返回該列表。否則,分派具有指定陣列的運行時型別和此列表大小的新陣列。

如果指定陣列能容納列表,並有剩餘空間(即陣列比列表元素多),則緊跟在列表末尾的陣列元素會被設置為 null。(只有 在調用者知道列表不包含任何 null 元素時,才可使用此方法來確定列表的長度。)

toArray() 方法一樣,此方法充當基於陣列的 API 與基於 collection 的 API 之間的橋樑。更進一步說,此方法允許對輸出陣列的運行時型別上進行精確控制,在某些情況下,可以用來節省分派開銷。

假定 x 是只包含字元串的一個已知列表。以下程式碼可用來將該列表轉儲到一個新分派的 String 陣列:

     String[] y = x.toArray(new String[0]);
注意,toArray(new Object[0])toArray() 在功能上是相同的。

指定者:
介面 Collection<E> 中的 toArray
指定者:
介面 List<E> 中的 toArray
覆寫:
類別 AbstractCollection<E> 中的 toArray
參數:
a - 要在其中存儲列表元素的陣列(如果它足夠大);否則,為其分派具有相同運行時型別的新陣列
返回:
包含列表元素的陣列
拋出:
ArrayStoreException - 如果指定陣列的運行時型別不是此列表中每個元素的運行時型別的父級類別型
NullPointerException - 如果指定的陣列為 null

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only