|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object java.util.AbstractCollection<E> java.util.AbstractList<E> java.util.AbstractSequentialList<E> java.util.LinkedList<E>
E
- 在此 collection 中保持的元素的型別public class LinkedList<E>
List 介面的連接列表實作。實作所有可選的列表操作,並且允許所有元素(包括 null)。除了實作 List 介面外,LinkedList 類別還為在列表的開頭及結尾 get、remove 和 insert 元素提供了統一的命名方法。這些操作允許將連接列表用作堆疊(stack)空間、佇列或雙端佇列。
此類別實作 Deque 介面,為 add、poll 提供先進先出佇列操作,以及其他堆疊(stack)空間和雙端佇列操作。
所有操作都是按照雙重連接列表的需要執行的。在列表中編索引的操作將從開頭或結尾遍歷列表(從靠近指定索引的一端)。
注意,此實作不是同步的。如果多個執行緒同時存取一個連接列表,而其中至少一個執行緒從結構上修改了該列表,則它必須 保持外部同步。(結構修改指添加或刪除一個或多個元素的任何操作;僅設置元素的值不是結構修改。)這一般通過對自然封裝該列表的物件進行同步操作來完成。如果不存在這樣的物件,則應該使用 Collections.synchronizedList
方法來“包裹”該列表。最好在創建時完成這一操作,以防止對列表進行意外的不同步存取,如下所示:
List list = Collections.synchronizedList(new LinkedList(...));
此類別的 iterator 和 listIterator 方法返回的迭代器是快速失敗 的:在迭代器創建之後,如果從結構上對列表進行修改,除非通過迭代器自身的 remove 或 add 方法,其他任何時間任何方式的修改,迭代器都將拋出 ConcurrentModificationException
。因此,面對共時的修改,迭代器很快就會完全失敗,而不冒將來不確定的時間任意發生不確定行為的風險。
注意,迭代器的快速失敗行為不能得到保證,一般來說,存在不同步的共時修改時,不可能作出任何硬性保證。快速失敗迭代器盡最大努力拋出 ConcurrentModificationException。因此,編寫依賴於此異常的程序的方式是錯誤的,正確做法是:迭代器的快速失敗行為應該僅用於檢測程序錯誤。
此類別是 Java Collections Framework 的成員。
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()
返回以適當順序(從第一個元素到最後一個元素)包含此列表中所有元素的陣列。 |
|
|
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 |
建構子詳細資訊 |
---|
public LinkedList()
public LinkedList(Collection<? extends E> c)
c
- 要將其元素放入此列表的 collection
NullPointerException
- 如果指定的 collection 為 null方法詳細資訊 |
---|
public E getFirst()
Deque<E>
中的 getFirst
NoSuchElementException
- 如果此列表為空public E getLast()
Deque<E>
中的 getLast
NoSuchElementException
- 如果此列表為空public E removeFirst()
Deque<E>
中的 removeFirst
NoSuchElementException
- 如果此列表為空public E removeLast()
Deque<E>
中的 removeLast
NoSuchElementException
- 如果此列表為空public void addFirst(E e)
Deque<E>
中的 addFirst
e
- 要添加的元素public void addLast(E e)
此方法等效於 add(E)
。
Deque<E>
中的 addLast
e
- 要添加的元素public boolean contains(Object o)
Collection<E>
中的 contains
Deque<E>
中的 contains
List<E>
中的 contains
AbstractCollection<E>
中的 contains
o
- 要測試在此列表中是否存在的元素
public int size()
Collection<E>
中的 size
Deque<E>
中的 size
List<E>
中的 size
AbstractCollection<E>
中的 size
public boolean add(E e)
此方法等效於 addLast(E)
。
Collection<E>
中的 add
Deque<E>
中的 add
List<E>
中的 add
Queue<E>
中的 add
AbstractList<E>
中的 add
e
- 要添加到此列表的元素
Collection.add(E)
的規定)public boolean remove(Object o)
Collection<E>
中的 remove
Deque<E>
中的 remove
List<E>
中的 remove
AbstractCollection<E>
中的 remove
o
- 要從此列表刪除的元素,如果存在
public boolean addAll(Collection<? extends E> c)
Collection<E>
中的 addAll
List<E>
中的 addAll
AbstractCollection<E>
中的 addAll
c
- 套件含要添加到此列表的元素的 collection
NullPointerException
- 如果指定的 collection 為 nullAbstractCollection.add(Object)
public boolean addAll(int index, Collection<? extends E> c)
List<E>
中的 addAll
AbstractSequentialList<E>
中的 addAll
index
- 在其中插入指定 collection 中第一個元素的索引c
- 套件含要添加到此列表的元素的 collection
IndexOutOfBoundsException
- 如果索引超出範圍 (index < 0 || index > size())
NullPointerException
- 如果指定的 collection 為 nullpublic void clear()
Collection<E>
中的 clear
List<E>
中的 clear
AbstractList<E>
中的 clear
public E get(int index)
List<E>
中的 get
AbstractSequentialList<E>
中的 get
index
- 要返回的元素的索引
IndexOutOfBoundsException
- 如果索引超出範圍 (index < 0 || index >= size())public E set(int index, E element)
List<E>
中的 set
AbstractSequentialList<E>
中的 set
index
- 要替換的元素的索引element
- 要在指定位置存儲的元素
IndexOutOfBoundsException
- 如果索引超出範圍 (index < 0 || index >= size())public void add(int index, E element)
List<E>
中的 add
AbstractSequentialList<E>
中的 add
index
- 要在其中插入指定元素的索引element
- 要插入的元素
IndexOutOfBoundsException
- 如果索引超出範圍 (index < 0 || index > size())public E remove(int index)
List<E>
中的 remove
AbstractSequentialList<E>
中的 remove
index
- 要移除的元素的索引
IndexOutOfBoundsException
- 如果索引超出範圍 (index < 0 || index >= size())public int indexOf(Object o)
List<E>
中的 indexOf
AbstractList<E>
中的 indexOf
o
- 要搜尋的元素
public int lastIndexOf(Object o)
List<E>
中的 lastIndexOf
AbstractList<E>
中的 lastIndexOf
o
- 要搜尋的元素
public E peek()
Deque<E>
中的 peek
Queue<E>
中的 peek
public E element()
Deque<E>
中的 element
Queue<E>
中的 element
NoSuchElementException
- 如果此列表為空public E poll()
Deque<E>
中的 poll
Queue<E>
中的 poll
public E remove()
Deque<E>
中的 remove
Queue<E>
中的 remove
NoSuchElementException
- 如果此列表為空public boolean offer(E e)
Deque<E>
中的 offer
Queue<E>
中的 offer
e
- 要添加的元素
Queue.offer(E)
的規定)public boolean offerFirst(E e)
Deque<E>
中的 offerFirst
e
- 要插入的元素
Deque.offerFirst(E)
的規定)public boolean offerLast(E e)
Deque<E>
中的 offerLast
e
- 要插入的元素
Deque.offerLast(E)
的規定)public E peekFirst()
Deque<E>
中的 peekFirst
public E peekLast()
Deque<E>
中的 peekLast
public E pollFirst()
Deque<E>
中的 pollFirst
public E pollLast()
Deque<E>
中的 pollLast
public void push(E e)
此方法等效於 addFirst(E)
。
Deque<E>
中的 push
e
- 要推入的元素public E pop()
此方法等效於 removeFirst()
。
Deque<E>
中的 pop
NoSuchElementException
- 如果此列表為空public boolean removeFirstOccurrence(Object o)
Deque<E>
中的 removeFirstOccurrence
o
- 要從此列表中移除的元素(如果存在)
public boolean removeLastOccurrence(Object o)
Deque<E>
中的 removeLastOccurrence
o
- 要從此列表中移除的元素(如果存在)
public ListIterator<E> listIterator(int index)
列表迭代器是快速失敗 的:在迭代器創建之後,如果從結構上對列表進行修改,除非通過列表迭代器自身的 remove 或 add 方法,其他任何時間任何方式的修改,列表迭代器都將拋出 ConcurrentModificationException。因此,面對共時的修改,迭代器很快就會完全失敗,而不冒將來不確定的時間任意發生不確定行為的風險。
List<E>
中的 listIterator
AbstractSequentialList<E>
中的 listIterator
index
- 要從列表迭代器返回的第一個元素的索引(通過調用 next 方法)
IndexOutOfBoundsException
- 如果索引超出範圍 (index < 0 || index > size())List.listIterator(int)
public Iterator<E> descendingIterator()
Deque
複製的描述
Deque<E>
中的 descendingIterator
public Object clone()
Object
中的 clone
Cloneable
public Object[] toArray()
由於此列表不維護對返回陣列的任何參考,因而它將是「安全的」。(換句話說,此方法必須分派一個新陣列)。因此,調用者可以隨意修改返回的陣列。
此方法充當基於陣列的 API 與基於 collection 的 API 之間的橋樑。
Collection<E>
中的 toArray
List<E>
中的 toArray
AbstractCollection<E>
中的 toArray
Arrays.asList(Object[])
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。