JavaTM 2
Platform
Std. Ed. v1.4.0

java.util
クラス LinkedList

java.lang.Object
  |
  +--java.util.AbstractCollection
        |
        +--java.util.AbstractList
              |
              +--java.util.AbstractSequentialList
                    |
                    +--java.util.LinkedList
すべての実装インタフェース:
Cloneable, Collection, List, Serializable

public class LinkedList
extends AbstractSequentialList
implements List, Cloneable, Serializable

List インタフェースのリンクリストの実装です。リストの任意のオペレーションをすべて実装し、null を含め、すべての要素を許可します。List インタフェースを実装するほかに、LinkedList クラスは、リストの先端および終端にある要素を取得および削除したり、先端および終端に要素を挿入したりするメソッド (getremoveinsert) を提供します。これらのオペレーションを使うと、リンクリストをスタック、キュー、または双方向キュー (デキュー) として使用できるようになります。

すべての stack/queue/deque オペレーションはリストの標準のオペレーションによって簡単に作成し直すことができます。これらのオペレーションは、対応する List のオペレーションより多少高速な場合もありますが、おもに便宜上の理由で含まれています。

すべてのオペレーションは、二重リンクリストの場合に予期されるとおりの動作をします。リストをインデックスで処理するオペレーションは、リストの先端または終端のうち、指定したインデックスに近い方からリストを処理します。

この実装は同期化されません。複数のスレッドが同時にリストにアクセスし、それらの少なくとも 1 つが構造的にリストを変更した場合には、外部で同期をとる必要があります。構造的な変更とは 1 つ以上の要素を追加または削除するすべての処理です。要素の値だけを変更する処理は、構造的な変更ではありません。通常、リストの同期をとるには、リストを自然にカプセル化するオブジェクトで同期をとります。そのようなオブジェクトがない場合には、Collections.synchronizedList メソッドを使って「ラップ」します。これは、リストへの偶発的な非同期アクセスを防ぐために、作成時に行うのが最適です。

     List list = Collections.synchronizedList(new LinkedList(...));

このクラスの iterator および listIterator メソッドによって返される反復子は「フェイルファスト」です。反復子の作成後に、反復子自体の remove または add メソッド以外の方法でリストが構造的に変更されると、反復子は ConcurrentModificationException をスローします。したがって、同時変更が行われると、反復子は、将来の予測できない時点において予測できない動作が発生する危険を回避するために、ただちにかつ手際よく例外をスローします。

反復子のフェイルファスト動作は、そのままの状態を保証できません。一般的に、非同期の同時変更があるなかで保証することは不可能です。フェイルファスト反復子は、最善な状態で ConcurrentModificationException をスローします。反復子のフェイルファスト動作はバグの検出のためだけに使用します。

導入されたバージョン:
1.2
関連項目:
List, ArrayList, Vector, Collections.synchronizedList(List), 直列化された形式

フィールドの概要
 
クラス java.util.AbstractList から継承したフィールド
modCount
 
コンストラクタの概要
LinkedList()
          空のリストを作成します。
LinkedList(Collection c)
          指定されたコレクションの要素が含まれているリストを、要素がコレクションの反復子によって返される順序で作成します。
 
メソッドの概要
 void add(int index, Object element)
          リストの指定された位置に、指定された要素を挿入します。
 boolean add(Object o)
          リストの最後に、指定された要素を追加します。
 boolean addAll(Collection c)
          指定されたコレクション内のすべての要素を、指定されたコレクションの反復子によって返される順序でリストの最後に追加します。
 boolean addAll(int index, Collection c)
          指定されたコレクション内のすべての要素を、リストの指定された位置に挿入します。
 void addFirst(Object o)
          リストの先頭に、指定された要素を挿入します。
 void addLast(Object o)
          リストの最後に、指定された要素を追加します。
 void clear()
          リストからすべての要素を削除します。
 Object clone()
          LinkedList のシャローコピーを返します。
 boolean contains(Object o)
          指定された要素がリスト含まれている場合に true を返します。
 Object get(int index)
          リスト内の指定された位置にある要素を返します。
 Object getFirst()
          リスト内の最初の要素を返します。
 Object getLast()
          リスト内の最後の要素を返します。
 int indexOf(Object o)
          リスト内で指定された要素が最初に検出された位置のインデックスを返します。
 int lastIndexOf(Object o)
          リスト内で指定された要素が最後に検出された位置のインデックスを返します。
 ListIterator listIterator(int index)
          リスト内の指定された位置で始まる、リスト内の要素を適切な順序で反復するリスト反復子を返します。
 Object remove(int index)
          リストの指定された位置にある要素を削除します。
 boolean remove(Object o)
          リスト内で最初に検出された、指定要素を削除します。
 Object removeFirst()
          リストから最初の要素を削除して返します。
 Object removeLast()
          リストから最後の要素を削除して返します。
 Object set(int index, Object element)
          リストの指定された位置にある要素を、指定された要素で置き換えます。
 int size()
          リスト内にある要素の数を返します。
 Object[] toArray()
          リスト内のすべての要素が正しい順序で格納されている配列を返します。
 Object[] toArray(Object[] 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
 

コンストラクタの詳細

LinkedList

public LinkedList()
空のリストを作成します。


LinkedList

public LinkedList(Collection c)
指定されたコレクションの要素が含まれているリストを、要素がコレクションの反復子によって返される順序で作成します。

パラメータ:
c - 要素がリストに配置されるコレクション
例外:
@exception - NullPointerException 指定されたコレクションが null である場合
メソッドの詳細

getFirst

public Object getFirst()
リスト内の最初の要素を返します。

戻り値:
リスト内の最初の要素
例外:
@exception - NoSuchElementException リストが空の場合

getLast

public Object getLast()
リスト内の最後の要素を返します。

戻り値:
リスト内の最後の要素
例外:
@exception - NoSuchElementException リストが空の場合

removeFirst

public Object removeFirst()
リストから最初の要素を削除して返します。

戻り値:
リストからの最初の要素
例外:
@exception - NoSuchElementException リストが空の場合

removeLast

public Object removeLast()
リストから最後の要素を削除して返します。

戻り値:
リストからの最後の要素
例外:
@exception - NoSuchElementException リストが空の場合

addFirst

public void addFirst(Object o)
リストの先頭に、指定された要素を挿入します。

パラメータ:
o - リストの先頭に挿入される要素

addLast

public void addLast(Object o)
リストの最後に、指定された要素を追加します。add メソッドと同じ機能ですが、一貫性のために提供されています。

パラメータ:
o - リストの最後に挿入される要素

contains

public boolean contains(Object o)
指定された要素がリスト含まれている場合に true を返します。つまり、リストに、(o==null ? e==null : o.equals(e)) となる要素 e が 1 つ以上含まれている場合にだけ true を返します。

定義:
インタフェース List 内の contains
オーバーライド:
クラス AbstractCollection 内の contains
パラメータ:
o - リストにあるかどうかを調べる要素
戻り値:
リストが、指定された要素を保持している場合は true

size

public int size()
リスト内にある要素の数を返します。

定義:
インタフェース List 内の size
定義:
クラス AbstractCollection 内の size
戻り値:
リスト内の要素数

add

public boolean add(Object o)
リストの最後に、指定された要素を追加します。

定義:
インタフェース List 内の add
オーバーライド:
クラス AbstractList 内の add
パラメータ:
o - リストに追加される要素
戻り値:
true (Collection.add の一般規約に従う)

remove

public boolean remove(Object o)
リスト内で最初に検出された、指定要素を削除します。その要素がリストにない場合、変更はありません。つまり、(o==null ? get(i)==null : o.equals(get(i))) となる、最小のインデックス値 i を持つ要素を削除します (そのような要素が存在する場合)。

定義:
インタフェース List 内の remove
オーバーライド:
クラス AbstractCollection 内の remove
パラメータ:
o - リストから削除される要素 (その要素がある場合)
戻り値:
リストに、指定された要素が格納されている場合は true

addAll

public boolean addAll(Collection c)
指定されたコレクション内のすべての要素を、指定されたコレクションの反復子によって返される順序でリストの最後に追加します。指定されたコレクションがオペレーションの進行中に変更された場合、オペレーションの動作は保証されません。つまり、指定された Collection がこのリスト自身であり、リストが空でない場合、この呼び出しの動作は保証されません。

定義:
インタフェース List 内の addAll
オーバーライド:
クラス AbstractCollection 内の addAll
パラメータ:
c - リストに挿入する要素
戻り値:
この呼び出しの結果、このリストが変更された場合は true
例外:
@exception - NullPointerException 指定されたコレクションが null である場合
関連項目:
List.add(Object)

addAll

public boolean addAll(int index,
                      Collection c)
指定されたコレクション内のすべての要素を、リストの指定された位置に挿入します。現在その位置にある要素と後続の要素は右に移動します (インデックス値が増加)。新しい要素は、指定されたコレクションの反復子によって返される順番でリストに挿入されます。

定義:
インタフェース List 内の addAll
オーバーライド:
クラス AbstractSequentialList 内の addAll
パラメータ:
index - 指定されたコレクションから最初の要素を挿入する位置のインデックス
c - リストに挿入される要素
戻り値:
この呼び出しの結果、このリストが変更された場合は true
例外:
@exception - IndexOutOfBoundsException 指定されたインデックスが範囲外の場合 (index < 0 || index > size())
@exception - NullPointerException 指定されたコレクションが null である場合

clear

public void clear()
リストからすべての要素を削除します。

定義:
インタフェース List 内の clear
オーバーライド:
クラス AbstractList 内の clear

get

public Object get(int index)
リスト内の指定された位置にある要素を返します。

定義:
インタフェース List 内の get
オーバーライド:
クラス AbstractSequentialList 内の get
パラメータ:
index - 返される要素のインデックス
戻り値:
リスト内の指定された位置にある要素
例外:
@exception - IndexOutOfBoundsException 指定されたインデックスが範囲外の場合 (index < 0 || index >= size())

set

public Object set(int index,
                  Object element)
リストの指定された位置にある要素を、指定された要素で置き換えます。

定義:
インタフェース List 内の set
オーバーライド:
クラス AbstractSequentialList 内の set
パラメータ:
index - 置換される要素のインデックス
element - 指定された位置に格納される要素
戻り値:
指定された位置に以前あった要素
例外:
@exception - IndexOutOfBoundsException 指定されたインデックスが範囲外の場合 (index < 0 || index >= size())

add

public void add(int index,
                Object element)
リストの指定された位置に、指定された要素を挿入します。現在その位置にある要素と後続の要素は右に移動します (インデックス値に 1 を加算)。

定義:
インタフェース List 内の add
オーバーライド:
クラス AbstractSequentialList 内の add
パラメータ:
index - 指定の要素が挿入されるインデックス
element - 挿入される要素
例外:
@exception - IndexOutOfBoundsException 指定されたインデックスが範囲外の場合 (index < 0 || index > size())

remove

public Object remove(int index)
リストの指定された位置にある要素を削除します。後続の要素は左に移動します (インデックス値から 1 を減算)。リストから削除された要素が返されます。

定義:
インタフェース List 内の remove
オーバーライド:
クラス AbstractSequentialList 内の remove
パラメータ:
index - 削除される要素のインデックス
戻り値:
指定された位置に以前あった要素
例外:
@exception - IndexOutOfBoundsException 指定されたインデックスが範囲外の場合 (index < 0 || index >= size())

indexOf

public int indexOf(Object o)
リスト内で指定された要素が最初に検出された位置のインデックスを返します。List にこの要素がない場合は -1 を返します。つまり、(o==null ? get(i)==null : o.equals(get(i))) となる、最小のインデックス値 i を返します。そのようなインデックスがない場合は -1 を返します。

定義:
インタフェース List 内の indexOf
オーバーライド:
クラス AbstractList 内の indexOf
パラメータ:
o - 検索する要素
戻り値:
リスト内で指定された要素が最初に検出された位置のインデックス。リストにこの要素がない場合は -1

lastIndexOf

public int lastIndexOf(Object o)
リスト内で指定された要素が最後に検出された位置のインデックスを返します。リストにこの要素がない場合は -1 を返します。つまり、(o==null ? get(i)==null : o.equals(get(i))) となる、最大のインデックス値 i を返します。そのようなインデックスがない場合は -1 を返します。

定義:
インタフェース List 内の lastIndexOf
オーバーライド:
クラス AbstractList 内の lastIndexOf
パラメータ:
o - 検索する要素
戻り値:
リスト内で指定された要素が最後に検出された位置のインデックス。リストにこの要素がない場合は -1

listIterator

public ListIterator listIterator(int index)
リスト内の指定された位置で始まる、リスト内の要素を適切な順序で反復するリスト反復子を返します。List.listIterator(int) の一般規約に従います。

リスト反復子は「フェイルファスト」です。反復子の作成後にリスト反復子自体の remove または add メソッド以外の方法でリストが構造的に変更されると、リスト反復子は ConcurrentModificationException をスローします。したがって、同時変更が行われると、反復子は、将来の予測できない時点において予測できない動作が発生する危機を回避するために、ただちにかつ手際よく例外をスローします。

定義:
インタフェース List 内の listIterator
定義:
クラス AbstractSequentialList 内の listIterator
パラメータ:
index - next の呼び出しによってリスト反復子から返される最初の要素のインデックス
戻り値:
リスト内の指定された位置から始まるリスト内の要素の ListIterator (適切な順番で)
例外:
@exception - IndexOutOfBoundsException インデックスが範囲外の場合 (index < 0 || index > size())
関連項目:
List.listIterator(int)

clone

public Object clone()
LinkedList のシャローコピーを返します。要素自身は複製されません。

オーバーライド:
クラス Object 内の clone
戻り値:
この LinkedList のインスタンスのシャローコピー
関連項目:
Cloneable

toArray

public Object[] toArray()
リスト内のすべての要素が正しい順序で格納されている配列を返します。

定義:
インタフェース List 内の toArray
オーバーライド:
クラス AbstractCollection 内の toArray
戻り値:
リスト内のすべての要素が正しい順序で格納されている配列
関連項目:
Arrays.asList(Object[])

toArray

public Object[] toArray(Object[] a)
リスト内のすべての要素が正しい順序で格納されている配列を返します。返される配列の実行時の型は指定された配列の型になります。指定された配列にリストが収まる場合は、その配列に返されます。それ以外の場合は、指定された配列の実行時の型とリストのサイズを使って新しい配列が割り当てられます。

指定された配列にリストが収まってもさらにスペースがある場合、つまり配列にリストより多くの要素がある場合は、コレクションの最後の直後にある配列内の要素は null に設定されます。これは、呼び出し側がリストに null 要素が含まれていないことがわかっている場合には、リストの長さを判定するのに利用できます。

定義:
インタフェース List 内の toArray
オーバーライド:
クラス AbstractCollection 内の toArray
パラメータ:
a - 配列が十分な大きさを持つ場合は、リストの要素が格納される配列。そうでない場合は、要素を格納するために同じ実行時の型の新しい配列が割り当てられる
戻り値:
リストの要素が格納されている配列
例外:
@exception - ArrayStoreException a の実行時の型がリスト内の各要素の実行時の型のスーパーセットでない場合
@exception - NullPointerException 指定された配列が null である場合

JavaTM 2
Platform
Std. Ed. v1.4.0

バグの報告と機能のリクエスト
これ以外の API リファレンスおよび開発者用ドキュメントについては、 Java 2 SDK SE 開発者用ドキュメントを参照してください。 開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、 およびコード実例が含まれています。

Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.