E
- このコレクション内に保持される要素の型public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, Serializable
List
およびDeque
インタフェースの二重リンク・リスト実装です。リストの任意のオペレーションをすべて実装し、null
を含むすべての要素を許容します。
すべてのオペレーションは、二重リンク・リストの場合に予期されるとおりの動作をします。リストをインデックスで処理するオペレーションは、リストの先端または終端のうち、指定したインデックスに近い方からリストをトラバースします。
この実装はsynchronizedされません。複数のスレッドが並行してLinkedListにアクセスし、スレッドの少なくとも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)
このリスト内のすべての要素を適切な順序で(最初の要素から最後の要素へ)含んでいる配列を返します。返される配列の実行時の型は、指定された配列の型になります。
|
iterator
equals, hashCode, listIterator, removeRange, subList
containsAll, isEmpty, removeAll, retainAll, toString
containsAll, equals, hashCode, isEmpty, iterator, listIterator, removeAll, replaceAll, retainAll, sort, subList
parallelStream, removeIf, stream
public 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
- このリストに追加される要素を含むコレクションtrue
NullPointerException
- 指定されたコレクションがnullである場合AbstractCollection.add(Object)
public boolean addAll(int index, Collection<? extends E> c)
addAll
、インタフェース: List<E>
addAll
、クラス: AbstractSequentialList<E>
index
- 指定されたコレクションの最初の要素を挿入する位置のインデックスc
- このリストに追加される要素を含むコレクションtrue
IndexOutOfBoundsException
- インデックスが範囲外の場合(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 void push(E e)
このメソッドは、addFirst(E)
と同等です。
public E pop()
このメソッドは、removeFirst()
と同等です。
pop
、インタフェース: Deque<E>
NoSuchElementException
- このリストが空の場合public boolean removeFirstOccurrence(Object o)
removeFirstOccurrence
、インタフェース: Deque<E>
o
- このリストから削除される要素(その要素が存在する場合)true
public boolean removeLastOccurrence(Object o)
removeLastOccurrence
、インタフェース: Deque<E>
o
- このリストから削除される要素(その要素が存在する場合)true
public 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()
Deque
descendingIterator
、インタフェース: 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, 2014, Oracle and/or its affiliates. All rights reserved.