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
をスローします。このように、並行して変更が行われると、イテレータは、将来の予測できない時点において予測できない動作が発生する危険を回避するために、ただちにかつ手際よく例外をスローします。
イテレータのフェイルファスト動作は実際には保証できません。一般的に、synchronized なしの並行変更がある場合、確実に保証することは不可能です。フェイルファストイテレータは、ベストエフォートベースで 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()
このリスト内にある要素の数を返します。
|
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, retainAll, subList
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>
a
- 配列が十分な大きさを持つ場合は、このリストの要素の格納先の配列。配列のサイズが十分でない場合は、同じ実行時の型で新しい配列が格納用として割り当てられる。ArrayStoreException
- 指定された配列の実行時の型が、このリスト内のすべての要素の実行時の型のスーパータイプではない場合NullPointerException
- 指定された配列が null である場合 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.