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のメンバーです。
modCount| コンストラクタ | 説明 | 
|---|---|
| LinkedList() | 空のリストを構築します。 | 
| LinkedList(Collection<? extends E> c) | 指定されたコレクションの要素が含まれているリストを、コレクションのイテレータによって返される順序で構築します。 | 
| 修飾子と型 | メソッド | 説明 | 
|---|---|---|
| boolean | add(E e) | このリストの最後に、指定された要素を追加します。 | 
| void | add(int index, E element) | このリスト内の指定された位置に指定された要素を挿入します。 | 
| boolean | addAll(Collection<? extends E> c) | 指定されたコレクション内のすべての要素を、指定されたコレクションのイテレータによって返される順序でこのリストの最後に追加します。 | 
| boolean | addAll(int index, Collection<? extends E> c) | 指定されたコレクション内のすべての要素を、このリストの指定された位置に挿入します。 | 
| 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() | このリストが表すスタックから要素をポップします。 | 
| void | push(E e) | このリストが表すスタック上に要素をプッシュします。 | 
| 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() | このリスト内にある要素の数を返します。 | 
| Spliterator<E> | spliterator() | このリスト内の要素に対する遅延バインディングおよびフェイルファスト  Spliteratorを作成します。 | 
| Object[] | toArray() | このリスト内のすべての要素を適切な順序で(最初の要素から最後の要素へ)含んでいる配列を返します。 | 
| <T> T[] | toArray(T[] a) | このリスト内のすべての要素を適切な順序で(最初の要素から最後の要素へ)含んでいる配列を返します。返される配列の実行時の型は、指定された配列の型になります。 | 
iteratorequals, hashCode, listIterator, removeRange, subListcontainsAll, isEmpty, removeAll, retainAll, toStringcontainsAll, equals, hashCode, isEmpty, iterator, listIterator, removeAll, replaceAll, retainAll, sort, subListparallelStream, removeIf, streampublic LinkedList()
public LinkedList(Collection<? extends E> c)
c - 要素がこのリストに配置されるコレクションNullPointerException - 指定されたコレクションがnullである場合public E getFirst()
getFirst、インタフェースDeque<E>NoSuchElementException - このリストが空の場合public E getLast()
getLast、インタフェースDeque<E>NoSuchElementException - このリストが空の場合public E removeFirst()
removeFirst、インタフェースDeque<E>NoSuchElementException - このリストが空の場合public E removeLast()
removeLast、インタフェースDeque<E>NoSuchElementException - このリストが空の場合public void addFirst(E e)
public boolean contains(Object o)
trueを返します。 つまり、このリストに、(o==null ? e==null : o.equals(e))となる要素eが1つ以上含まれている場合にのみtrueを返します。 public int size()
public boolean add(E e)
このメソッドは、addLast(E)と同等です。
public boolean remove(Object o)
iを持つ要素を削除します(そのような要素が存在する場合)。 指定された要素がこのリストに含まれていた場合、つまり、呼出しの結果としてこのリストが変更された場合にtrueを返します。 public boolean addAll(Collection<? extends E> c)
addAll、インタフェースCollection<E>addAll、インタフェースList<E>addAll、クラスAbstractCollection<E>c - このリストに追加される要素を含むコレクションtrueNullPointerException - 指定されたコレクションがnullである場合AbstractCollection.add(Object)public boolean addAll(int index,
                      Collection<? extends E> c)
addAll、インタフェースList<E>addAll、クラスAbstractSequentialList<E>index - 指定されたコレクションの最初の要素を挿入する位置のインデックスc - このリストに追加される要素を含むコレクションtrueIndexOutOfBoundsException - インデックスが範囲外の場合(index < 0||index> size())NullPointerException - 指定されたコレクションがnullである場合public void clear()
clear、インタフェースCollection<E>clear、インタフェースList<E>clear、クラスAbstractList<E>public E get(int index)
get、インタフェースList<E>get、クラスAbstractSequentialList<E>index - 返される要素のインデックスIndexOutOfBoundsException - インデックスが範囲外の場合(index < 0||index>= size())public E set(int index, E element)
set、インタフェースList<E>set、クラスAbstractSequentialList<E>index - 置換される要素のインデックスelement - 指定された位置に格納される要素IndexOutOfBoundsException - インデックスが範囲外の場合(index < 0||index>= size())public void add(int index,
                E element)
add、インタフェースList<E>add、クラスAbstractSequentialList<E>index - 指定の要素が挿入される位置のインデックスelement - 挿入される要素IndexOutOfBoundsException - インデックスが範囲外の場合(index < 0||index> size())public E remove(int index)
remove、インタフェースList<E>remove、クラスAbstractSequentialList<E>index - 削除される要素のインデックスIndexOutOfBoundsException - インデックスが範囲外の場合(index < 0||index>= size())public int indexOf(Object o)
iを返します。そのようなインデックスが存在しない場合は -1を返します。 public int lastIndexOf(Object o)
iを返します。そのようなインデックスが存在しない場合は -1を返します。 lastIndexOf、インタフェースList<E>lastIndexOf、クラスAbstractList<E>o - 検索する要素public E peek()
public E element()
public E poll()
public E remove()
public boolean offer(E e)
public boolean offerFirst(E e)
offerFirst、インタフェースDeque<E>e - 挿入する要素true (Deque.offerFirst(E)で指定されているとおり)public boolean offerLast(E e)
offerLast、インタフェースDeque<E>e - 挿入する要素true (Deque.offerLast(E)で指定されているとおり)public E peekFirst()
nullを返します。public E peekLast()
nullを返します。public E pollFirst()
nullを返します。public E pollLast()
nullを返します。public E pop()
pop、インタフェースDeque<E>NoSuchElementException - このリストが空の場合public boolean removeFirstOccurrence(Object o)
removeFirstOccurrence、インタフェースDeque<E>o - このリストから削除される要素(その要素が存在する場合)truepublic boolean removeLastOccurrence(Object o)
removeLastOccurrence、インタフェースDeque<E>o - このリストから削除される要素(その要素が存在する場合)truepublic ListIterator<E> listIterator(int index)
List.listIterator(int)の一般規約に従います。 
 リスト・イテレータはフェイルファストです。イテレータの作成後に、リスト・イテレータ自体のremoveまたはaddメソッド以外の方法でリストが構造的に変更されると、リスト・イテレータはConcurrentModificationExceptionをスローします。 このように、並行して変更が行われると、イテレータは、将来の予測できない時点において予測できない動作が発生する危険を回避するために、ただちにかつ手際よく例外をスローします。 
listIterator、インタフェースList<E>listIterator、クラスAbstractSequentialList<E>index - リスト・イテレータから(next呼出しによって)返される最初の要素のインデックスIndexOutOfBoundsException - インデックスが範囲外の場合(index < 0||index> size())List.listIterator(int)public Iterator<E> descendingIterator()
DequedescendingIterator、インタフェースDeque<E>public Object clone()
LinkedListのシャロー・コピーを返します。 (要素自体は複製されません。) public Object[] toArray()
返される配列は、それへの参照がこのリストで保持されない場合に、安全になります。 (つまり、このメソッドは新しい配列を割り当てます)。 このため、呼出し側は、返された配列を自由に変更できます。
このメソッドは、配列ベースのAPIとコレクションベースのAPIの間の橋渡し役として機能します。
toArray、インタフェースCollection<E>toArray、インタフェースList<E>toArray、クラスAbstractCollection<E>Arrays.asList(Object[])public <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である場合public Spliterator<E> spliterator()
Spliteratorを作成します。
 Spliteratorは、Spliterator.SIZEDおよびSpliterator.ORDEREDを報告します。 オーバーライドする実装は、追加の特性値の報告をドキュメント化する必要があります。 
spliterator、インタフェースIterable<E>spliterator、インタフェースCollection<E>spliterator、インタフェースList<E>Spliteratorは、追加でSpliterator.SUBSIZEDを報告し、制限付き並列性を許可するためにtrySplitを実装します。Spliterator バグまたは機能を送信 
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。 
 Copyright © 1993, 2025, Oracle and/or its affiliates.  All rights reserved.  Use is subject to license terms.  Documentation Redistribution Policyも参照してください。