- 型パラメータ:
- E- このコレクション内に保持される要素の型
- すべての実装されたインタフェース:
- 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およびDequeインタフェースの二重リンク・リスト実装です。 リストの任意のオペレーションをすべて実装し、nullを含むすべての要素を許容します。 
 すべてのオペレーションは、二重リンク・リストの場合に予期されるとおりの動作をします。 リストをインデックスで処理するオペレーションは、リストの先端または終端のうち、指定したインデックスに近い方からリストをトラバースします。
この実装はsynchronizedされません。 複数のスレッドが並行してリンク・リストにアクセスし、スレッドの少なくとも1つが構造的にリストを変更する場合には、外部でsynchronizedされる必要があります。 構造的な変更とは1つ以上の要素を追加または削除するすべての処理です。要素の値を変更するだけの処理は、構造的な変更ではありません。 これは通常、リストを自然にカプセル化する一部のオブジェクトでsynchronizedすることによって達成されます。 そのようなオブジェクトが存在しない場合は、Collections.synchronizedListメソッドを使用してリストを「ラップ」するようにしてください。 リストが誤ってsynchronizedなしでアクセスされるのを防ぐために、作成時に行うことをお薦めします。 
List list = Collections.synchronizedList(new LinkedList(...));
このクラスのiteratorおよびlistIteratorメソッドによって返されるイテレータは、フェイルファストです。イテレータの作成後に、イテレータ自体のremoveまたはaddメソッド以外の方法でリストが構造的に変更されると、イテレータはConcurrentModificationExceptionをスローします。 このように、並行して変更が行われると、イテレータは、将来の予測できない時点において予測できない動作が発生する危険を回避するために、ただちにかつ手際よく例外をスローします。 
 
通常、非同期の並行変更がある場合、確かな保証を行うことは不可能なので、イテレータのフェイルファストの動作を保証することはできません。 フェイルファスト・イテレータは、ベスト・エフォート・ベースでConcurrentModificationExceptionをスローします。 したがって、正確を期すためにこの例外に依存するプログラムを書くことは誤りです。イテレータのフェイルファストの動作はバグを検出するためにのみ使用すべきです。 
 
このクラスは、Java Collections Frameworkのメンバーです。
- 
フィールドのサマリー
- 
コンストラクタのサマリーコンストラクタ コンストラクタ 説明 LinkedList()空のリストを構築します。LinkedList(Collection<? extends E> c)指定されたコレクションの要素が含まれているリストを、コレクションのイテレータによって返される順序で構築します。
- 
メソッドのサマリー修飾子と型 メソッド 説明 voidadd(int index, E element)リスト内の指定された位置に指定された要素を挿入します。booleanadd(E e)リストの最後に、指定された要素を追加します。booleanaddAll(int index, Collection<? extends E> c)指定されたコレクション内のすべての要素を、リストの指定された位置に挿入します。booleanaddAll(Collection<? extends E> c)指定されたコレクション内のすべての要素を、指定されたコレクションのイテレータによって返される順序でこのリストの最後に追加します。voidaddFirst(E e)このリストの先頭に、指定された要素を挿入します。voidaddLast(E e)リストの最後に、指定された要素を追加します。voidclear()このリストからすべての要素を削除します。Objectclone()このLinkedListのシャロー・コピーを返します。booleancontains(Object o)指定された要素がこのリストに含まれている場合にtrueを返します。Iterator<E>descendingIterator()この両端キュー内の要素を逆順で反復処理するイテレータを返します。Eelement()このリストの先頭(最初の要素)を取得しますが、削除はしません。Eget(int index)このリスト内の指定された位置にある要素を返します。EgetFirst()このリスト内の最初の要素を返します。EgetLast()このリスト内の最後の要素を返します。intindexOf(Object o)指定された要素がこのリスト内で最初に検出された位置のインデックスを返します。指定された要素がこのリストにない場合は -1を返します。intlastIndexOf(Object o)指定された要素がこのリスト内で最後に検出された位置のインデックスを返します。指定された要素がこのリストにない場合は -1を返します。ListIterator<E>listIterator(int index)このリスト内の要素を適切な順序で反復するリスト・イテレータ(リスト内の指定された位置で始まる)を返します。booleanoffer(E e)指定された要素をこのリストの末尾(最後の要素)に追加します。booleanofferFirst(E e)このリストの先頭に、指定された要素を挿入します。booleanofferLast(E e)このリストの末尾に、指定された要素を挿入します。Epeek()このリストの先頭(最初の要素)を取得しますが、削除はしません。EpeekFirst()このリストの最初の要素を取得しますが、削除はしません。このリストが空の場合はnullを返します。EpeekLast()このリストの最後の要素を取得しますが、削除はしません。このリストが空の場合はnullを返します。Epoll()このリストの先頭(最初の要素)を取得し、削除します。EpollFirst()このリストの最初の要素を取得および削除します。このリストが空の場合はnullを返します。EpollLast()リストの最後の要素を取得および削除します。このリストが空の場合はnullを返します。Epop()このリストが表すスタックから要素をポップします。voidpush(E e)このリストが表すスタック上に要素をプッシュします。Eremove()このリストの先頭(最初の要素)を取得し、削除します。Eremove(int index)このリストの指定された位置にある要素を削除します。booleanremove(Object o)指定された要素がこのリストにあれば、その最初のものをリストから削除します。EremoveFirst()このリストから最初の要素を削除して返します。booleanremoveFirstOccurrence(Object o)このリスト内で最初に検出された、指定された要素を削除します(リストを先頭から末尾の方向にトラバースした場合)。EremoveLast()このリストから最後の要素を削除して返します。booleanremoveLastOccurrence(Object o)このリスト内で最後に検出された、指定された要素を削除します(リストを先頭から末尾の方向にトラバースした場合)。Eset(int index, E element)リストの指定された位置にある要素を、指定された要素で置き換えます。intsize()このリスト内にある要素の数を返します。Spliterator<E>spliterator()このリスト内の要素に対する遅延バインディングおよびフェイルファストSpliteratorを作成します。Object[]toArray()このリスト内のすべての要素を適切な順序で(最初の要素から最後の要素へ)含んでいる配列を返します。<T> T[]toArray(T[] a)このリスト内のすべての要素を適切な順序で(最初の要素から最後の要素へ)含んでいる配列を返します。返される配列の実行時の型は、指定された配列の型になります。インタフェース java.util.Listで宣言されたメソッドcontainsAll, equals, hashCode, isEmpty, iterator, listIterator, removeAll, replaceAll, retainAll, sort, subList
- 
コンストラクタの詳細- 
LinkedListpublic LinkedList()空のリストを構築します。
- 
LinkedListpublic LinkedList(Collection<? extends E> c)指定されたコレクションの要素が含まれているリストを、コレクションのイテレータによって返される順序で構築します。- パラメータ:
- c- 要素がこのリストに配置されるコレクション
- 例外:
- NullPointerException- 指定されたコレクションがnullである場合
 
 
- 
- 
メソッドの詳細- 
getFirstpublic E getFirst()このリスト内の最初の要素を返します。- 定義:
- getFirst、インタフェース:- Deque<E>
- 戻り値:
- このリスト内の最初の要素
- 例外:
- NoSuchElementException- このリストが空の場合
 
- 
getLastpublic E getLast()このリスト内の最後の要素を返します。- 定義:
- getLast、インタフェース:- Deque<E>
- 戻り値:
- このリスト内の最後の要素
- 例外:
- NoSuchElementException- このリストが空の場合
 
- 
removeFirstpublic E removeFirst()このリストから最初の要素を削除して返します。- 定義:
- removeFirst、インタフェース:- Deque<E>
- 戻り値:
- このリストからの最初の要素
- 例外:
- NoSuchElementException- このリストが空の場合
 
- 
removeLastpublic E removeLast()このリストから最後の要素を削除して返します。- 定義:
- removeLast、インタフェース:- Deque<E>
- 戻り値:
- このリストからの最後の要素
- 例外:
- NoSuchElementException- このリストが空の場合
 
- 
addFirstpublic void addFirst(E e)このリストの先頭に、指定された要素を挿入します。
- 
addLastpublic void addLast(E e)リストの最後に、指定された要素を追加します。このメソッドは、 add(E)と同等です。
- 
containspublic boolean contains(Object o)指定された要素がこのリストに含まれている場合にtrueを返します。 より正式には、このリストにObjects.equals(o, e)などの少なくとも1つの要素eが含まれている場合にのみtrueを返します。
- 
sizepublic int size()このリスト内にある要素の数を返します。
- 
addpublic boolean add(E e)リストの最後に、指定された要素を追加します。このメソッドは、 addLast(E)と同等です。
- 
removepublic boolean remove(Object o)指定された要素がこのリストにあれば、その最初のものをリストから削除します。 このリストにその要素がない場合は、変更されません。 より正式には、Objects.equals(o, get(i))(そのような要素が存在する場合)のような最も低いインデックスiを持つ要素を削除します。 指定された要素がこのリストに含まれていた場合、つまり、呼出しの結果としてこのリストが変更された場合にtrueを返します。
- 
addAllpublic boolean addAll(Collection<? extends E> c)指定されたコレクション内のすべての要素を、指定されたコレクションのイテレータによって返される順序でこのリストの最後に追加します。 オペレーションの進行中に、指定されたコレクションが変更された場合の、このオペレーションの動作は定義されていません。 (これは、指定されたコレクションがこのリストで、しかも空ではない場合に起こります。)- 定義:
- addAll、インタフェース:- Collection<E>
- 定義:
- インタフェースDeque<E>内のaddAll
- 定義:
- addAll、インタフェース:- List<E>
- オーバーライド:
- addAll、クラス:- AbstractCollection<E>
- パラメータ:
- c- このリストに追加される要素を含むコレクション。
- 戻り値:
- 呼出しの結果としてこのリストが変更された場合はtrue
- 例外:
- NullPointerException- 指定されたコレクションがnullである場合
- 関連項目:
- AbstractCollection.add(Object)
 
- 
addAllpublic boolean addAll(int index, Collection<? extends E> c)指定されたコレクション内のすべての要素を、リストの指定された位置に挿入します。 その位置とそれ以降に要素がある場合は、それらを右に移動して、各要素のインデックスに1を加えます。 新しい要素は、指定されたコレクションのイテレータによって返される順番でリストに挿入されます。- 定義:
- addAll、インタフェース:- List<E>
- オーバーライド:
- addAll、クラス:- AbstractSequentialList<E>
- パラメータ:
- index- 指定されたコレクションの最初の要素を挿入する位置のインデックス。
- c- このリストに追加される要素を含むコレクション。
- 戻り値:
- 呼出しの結果としてこのリストが変更された場合はtrue
- 例外:
- IndexOutOfBoundsException- インデックスが範囲外の場合(- index < 0||index> size())
- NullPointerException- 指定されたコレクションがnullである場合
 
- 
clearpublic void clear()このリストからすべての要素を削除します。 この呼出しが戻ると、このリストは空になります。- 定義:
- clear、インタフェース:- Collection<E>
- 定義:
- clear、インタフェース:- List<E>
- オーバーライド:
- clear、クラス:- AbstractList<E>
 
- 
getpublic E get(int index)このリスト内の指定された位置にある要素を返します。- 定義:
- get、インタフェース:- List<E>
- オーバーライド:
- get、クラス:- AbstractSequentialList<E>
- パラメータ:
- index- 返される要素のインデックス
- 戻り値:
- このリスト内の指定された位置にある要素
- 例外:
- IndexOutOfBoundsException- インデックスが範囲外の場合(- index < 0||index>= size())
 
- 
setリストの指定された位置にある要素を、指定された要素で置き換えます。- 定義:
- set、インタフェース:- List<E>
- オーバーライド:
- set、クラス:- AbstractSequentialList<E>
- パラメータ:
- index- 置換される要素のインデックス。
- element- 指定された位置に格納される要素。
- 戻り値:
- 指定された位置に以前あった要素。
- 例外:
- IndexOutOfBoundsException- インデックスが範囲外の場合(- index < 0||index>= size())
 
- 
addpublic void add(int index, E element)リスト内の指定された位置に指定された要素を挿入します。 その位置とそれ以降に要素があればそれらを右に移動させ、各要素のインデックスに1を加えます。- 定義:
- add、インタフェース:- List<E>
- オーバーライド:
- add、クラス:- AbstractSequentialList<E>
- パラメータ:
- index- 指定の要素が挿入される位置のインデックス
- element- 挿入される要素
- 例外:
- IndexOutOfBoundsException- インデックスが範囲外の場合(- index < 0||index> size())
 
- 
removepublic E remove(int index)このリストの指定された位置にある要素を削除します。 後続の要素を左に移動します(インデックスから1を減算)。 リストから削除された要素が返されます。- 定義:
- remove、インタフェース:- List<E>
- オーバーライド:
- remove、クラス:- AbstractSequentialList<E>
- パラメータ:
- index- 削除される要素のインデックス
- 戻り値:
- 指定された位置に以前あった要素。
- 例外:
- IndexOutOfBoundsException- インデックスが範囲外の場合(- index < 0||index>= size())
 
- 
indexOfpublic int indexOf(Object o)指定された要素がこのリスト内で最初に検出された位置のインデックスを返します。指定された要素がこのリストにない場合は -1を返します。 より正式には、Objects.equals(o, get(i))のような最も低いインデックスi、またはそのようなインデックスがない場合は -1を返します。
- 
lastIndexOfpublic int lastIndexOf(Object o)指定された要素がこのリスト内で最後に検出された位置のインデックスを返します。指定された要素がこのリストにない場合は -1を返します。 より正式には、Objects.equals(o, get(i))のような最高のインデックスi、またはそのようなインデックスがない場合は -1を返します。- 定義:
- lastIndexOf、インタフェース:- List<E>
- オーバーライド:
- lastIndexOf、クラス:- AbstractList<E>
- パラメータ:
- o- 検索する要素
- 戻り値:
- 指定された要素がこのリスト内で最後に検出された位置のインデックス。その要素がこのリストにない場合は -1
 
- 
peekpublic E peek()このリストの先頭(最初の要素)を取得しますが、削除はしません。
- 
elementpublic E element()このリストの先頭(最初の要素)を取得しますが、削除はしません。
- 
pollpublic E poll()このリストの先頭(最初の要素)を取得し、削除します。
- 
removepublic E remove()このリストの先頭(最初の要素)を取得し、削除します。
- 
offerpublic boolean offer(E e)指定された要素をこのリストの末尾(最後の要素)に追加します。
- 
offerFirstpublic boolean offerFirst(E e)このリストの先頭に、指定された要素を挿入します。- 定義:
- offerFirst、インタフェース:- Deque<E>
- パラメータ:
- e- 挿入する要素
- 戻り値:
- true(- Deque.offerFirst(E)で指定されているとおり)
- 導入されたバージョン:
- 1.6
 
- 
offerLastpublic boolean offerLast(E e)このリストの末尾に、指定された要素を挿入します。- 定義:
- offerLast、インタフェース:- Deque<E>
- パラメータ:
- e- 挿入する要素
- 戻り値:
- true(- Deque.offerLast(E)で指定されているとおり)
- 導入されたバージョン:
- 1.6
 
- 
peekFirstpublic E peekFirst()このリストの最初の要素を取得しますが、削除はしません。このリストが空の場合はnullを返します。
- 
peekLastpublic E peekLast()このリストの最後の要素を取得しますが、削除はしません。このリストが空の場合はnullを返します。
- 
pollFirstpublic E pollFirst()このリストの最初の要素を取得および削除します。このリストが空の場合はnullを返します。
- 
pollLastpublic E pollLast()リストの最後の要素を取得および削除します。このリストが空の場合はnullを返します。
- 
pushpublic void push(E e)
- 
poppublic E pop()- 定義:
- pop、インタフェース:- Deque<E>
- 戻り値:
- このリストの先頭の要素(このリストが表すスタックの一番上)
- 例外:
- NoSuchElementException- このリストが空の場合
- 導入されたバージョン:
- 1.6
 
- 
removeFirstOccurrencepublic boolean removeFirstOccurrence(Object o)このリスト内で最初に検出された、指定された要素を削除します(リストを先頭から末尾の方向にトラバースした場合)。 その要素がリストにない場合、変更はありません。- 定義:
- removeFirstOccurrence、インタフェース:- Deque<E>
- パラメータ:
- o- このリストから削除される要素(その要素が存在する場合)
- 戻り値:
- 指定された要素がリストに含まれていた場合はtrue
- 導入されたバージョン:
- 1.6
 
- 
removeLastOccurrencepublic boolean removeLastOccurrence(Object o)このリスト内で最後に検出された、指定された要素を削除します(リストを先頭から末尾の方向にトラバースした場合)。 その要素がリストにない場合、変更はありません。- 定義:
- removeLastOccurrence、インタフェース:- Deque<E>
- パラメータ:
- o- このリストから削除される要素(その要素が存在する場合)
- 戻り値:
- 指定された要素がリストに含まれていた場合はtrue
- 導入されたバージョン:
- 1.6
 
- 
listIteratorpublic ListIterator<E> listIterator(int index)このリスト内の要素を適切な順序で反復するリスト・イテレータ(リスト内の指定された位置で始まる)を返します。List.listIterator(int)の一般規約に従います。リスト・イテレータはフェイルファストです。イテレータの作成後に、リスト・イテレータ自体の removeまたはaddメソッド以外の方法でリストが構造的に変更されると、リスト・イテレータはConcurrentModificationExceptionをスローします。 このように、並行して変更が行われると、イテレータは、将来の予測できない時点において予測できない動作が発生する危険を回避するために、ただちにかつ手際よく例外をスローします。- 定義:
- listIterator、インタフェース:- List<E>
- 定義:
- listIterator、クラス:- AbstractSequentialList<E>
- パラメータ:
- index- リスト・イテレータから(- next呼出しによって)返される最初の要素のインデックス
- 戻り値:
- このリスト内の要素を適切な順序で反復するListIterator (リスト内の指定された位置で始まる)
- 例外:
- IndexOutOfBoundsException- インデックスが範囲外の場合(- index < 0||index> size())
- 関連項目:
- List.listIterator(int)
 
- 
descendingIteratorインタフェースからコピーされた説明:Dequeこの両端キュー内の要素を逆順で反復処理するイテレータを返します。 要素は最後(末尾)から最初(先頭)の順に返されます。- 定義:
- descendingIterator、インタフェース:- Deque<E>
- 戻り値:
- この両端キュー内の要素を逆順で反復処理するイテレータ
- 導入されたバージョン:
- 1.6
 
- 
clonepublic Object clone()このLinkedListのシャロー・コピーを返します。 要素自体は複製されません。
- 
toArraypublic Object[] toArray()このリスト内のすべての要素を適切な順序で(最初の要素から最後の要素へ)含んでいる配列を返します。返される配列は、それへの参照がこのリストで保持されない場合に、安全になります。 (つまり、このメソッドは新しい配列を割り当てます)。 このため、呼出し側は、返された配列を自由に変更できます。 このメソッドは、配列ベースのAPIとコレクションベースのAPIの間の橋渡し役として機能します。 - 定義:
- toArray、インタフェース:- Collection<E>
- 定義:
- toArray、インタフェース:- List<E>
- オーバーライド:
- toArray、クラス:- AbstractCollection<E>
- 戻り値:
- このリスト内のすべての要素を適切な順序で含んでいる配列
- 関連項目:
- Arrays.asList(Object[])
 
- 
toArraypublic <T> T[] toArray(T[] a)このリスト内のすべての要素を適切な順序で(最初の要素から最後の要素へ)含んでいる配列を返します。返される配列の実行時の型は、指定された配列の型になります。 指定された配列にリストが収まる場合は、その配列で返されます。 それ以外の場合は、指定された配列の実行時の型とこのリストのサイズを使って新しい配列が割り当てられます。指定された配列にリストが収まり、さらに余分な領域がある場合(配列にリストより多くの要素がある場合)、配列でリストの末尾に続く要素は nullに設定されます。 このリストにnull要素がないことを呼出し側が知っている場合にのみ、この特性を利用してリストの長さを判断できます。toArray()メソッドと同じように、このメソッドは、配列ベースのAPIとコレクションベースのAPIの間の橋渡し役として機能します。 さらに、このメソッドでは出力配列の実行時の型を正確に制御できるため、環境によっては割当ての手間を抑えるために使用できます。xが、文字列だけからなるリストであることがわかっていると仮定します。 次のコードを使うと、新しく割り当てられたStringの配列にリストをダンプできます。String[] y = x.toArray(new String[0]);toArray(new Object[0])は、機能の点でtoArray()と同一です。- 定義:
- toArray、インタフェース:- Collection<E>
- 定義:
- toArray、インタフェース:- List<E>
- オーバーライド:
- toArray、クラス:- AbstractCollection<E>
- 型パラメータ:
- T- コレクションを格納する配列のコンポーネント型
- パラメータ:
- a- 配列が十分な大きさを持つ場合は、このリストの要素の格納先の配列。配列のサイズが十分でない場合は、同じ実行時の型で新しい配列が格納用として割り当てられる。
- 戻り値:
- リストの要素が格納されている配列
- 例外:
- ArrayStoreException- 指定された配列の実行時の型が、このリスト内のすべての要素の実行時の型のスーパー・タイプではない場合
- NullPointerException- 指定された配列がnullである場合
 
- 
spliteratorpublic Spliterator<E> spliterator()このリスト内の要素に対する遅延バインディングおよびフェイルファストSpliteratorを作成します。Spliteratorは、Spliterator.SIZEDおよびSpliterator.ORDEREDを報告します。 オーバーライドする実装は、追加の特性値の報告をドキュメント化する必要があります。- 定義:
- spliterator、インタフェース:- Collection<E>
- 定義:
- spliterator、インタフェース:- Iterable<E>
- 定義:
- spliterator、インタフェース:- List<E>
- 実装上のノート:
- Spliteratorは、追加で- Spliterator.SUBSIZEDを報告し、制限付き並列性を許可するために- trySplitを実装します。
- 戻り値:
- このリスト内の要素に対するSpliterator
- 導入されたバージョン:
- 1.8
 
 
-