|
Foundation 1.1.2 | |||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object java.util.AbstractCollection java.util.AbstractList
public abstract class AbstractList
このクラスは、List インタフェースのスケルトン実装を提供し、配列のような「ランダムアクセス」データ記憶域に連動するこのインタフェースを実装するのに必要な作業量を最小限に抑えます。リンクリストのような順次アクセスデータ記憶域の場合は、このクラスではなく AbstractSequentialList を使用してください。
変更不可能なリストを実装するには、このクラスを拡張して、get(int index) メソッドおよび size() メソッドの実装を提供します。
変更可能なリストを実装するには、プログラマはさらに set(int index, Object element) メソッドをオーバーライドします。このメソッドをオーバーライドしなかった場合は、UnsupportedOperationException がスローされます。リストが可変サイズである場合は、add(int index, Object element) メソッドおよび remove(int index) メソッドもオーバーライドする必要があります。
Collection インタフェースの仕様で推奨されているように、通常は、引数なしの void コンストラクタ、および引数にコレクションをとるコンストラクタを提供してください。
ほかのコレクションの抽象実装とは異なり、反復子の実装を提供する必要はありません。反復子およびリスト反復子はこのクラスで実装され、ランダムアクセス用のメソッドである get(int index)、set(int index, Object element)、set(int index, Object element)、add(int index, Object element)、および remove(int index) の上位に位置付けられます。
実装の詳細については、このクラスの abstract メソッド以外の各メソッドのドキュメントを参照してください。より効率的な実装ができるコレクションの場合は、これらのメソッドをオーバーライドしてもかまいません。
このクラスは、Java Collections Framework のメンバーです。
Collection
,
List
,
AbstractSequentialList
,
AbstractCollection
フィールドの概要 | |
---|---|
protected int |
modCount
このリストの「構造が変更された」回数です。 |
コンストラクタの概要 | |
---|---|
protected |
AbstractList()
唯一のコンストラクタです。 |
メソッドの概要 | |
---|---|
void |
add(int index,
Object element)
リスト内の指定された位置に、指定された要素を挿入します (任意のオペレーション)。 |
boolean |
add(Object o)
指定された要素をリストの末尾に追加します (任意のオペレーション)。 |
boolean |
addAll(int index,
Collection c)
指定されたコレクション内のすべての要素を、リストの指定された位置に挿入します (任意のオペレーション)。 |
void |
clear()
このコレクションからすべての要素を削除します (任意のオペレーション)。 |
boolean |
equals(Object o)
指定されたオブジェクトがリストと等しいかどうかを比較します。 |
abstract Object |
get(int index)
リスト内の指定された位置にある要素を返します。 |
int |
hashCode()
このリストのハッシュコード値を返します。 |
int |
indexOf(Object o)
このリスト内で指定された要素が最初に検出された位置のインデックスか、リストにこの要素がない場合は -1 を返します。 |
Iterator |
iterator()
このリスト内の要素を適切な順序で繰り返し処理する反復子を返します。 |
int |
lastIndexOf(Object o)
このリスト内で指定された要素が最後に検出された位置のインデックスか、リストにこの要素がない場合は -1 を返します。 |
ListIterator |
listIterator()
このリスト内の要素を適切な順序で繰り返し処理する反復子を返します。 |
ListIterator |
listIterator(int index)
このリスト内の要素を適切な順序で繰り返し処理する、リスト内の指定された位置から開始するリスト反復子を返します。 |
Object |
remove(int index)
リスト内の指定された位置にある要素を削除します (任意のオペレーション)。 |
protected void |
removeRange(int fromIndex,
int toIndex)
このリストから、fromIndex で始まり、toIndex の直前で終わるインデックスを持つすべての要素を削除します。 |
Object |
set(int index,
Object element)
リスト内の指定された位置にある要素を、指定された要素に置き換えます (任意のオペレーション)。 |
List |
subList(int fromIndex,
int toIndex)
このリストの、fromIndex (これを含む) から toIndex (これを含まない) の範囲の部分のビューを返します。 |
クラス java.util.AbstractCollection から継承されたメソッド |
---|
addAll, contains, containsAll, isEmpty, remove, removeAll, retainAll, size, toArray, toArray, toString |
クラス java.lang.Object から継承されたメソッド |
---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
インタフェース java.util.List から継承されたメソッド |
---|
addAll, contains, containsAll, isEmpty, remove, removeAll, retainAll, size, toArray, toArray |
フィールドの詳細 |
---|
protected transient int modCount
このフィールドは、iterator メソッドおよび listIterator メソッドによって返される反復子およびリスト反復子の実装によって使用されます。このフィールドの値が予期しない形で変化した場合、反復子やリスト反復子は next、remove、previous、set、または add オペレーションに応じて ConcurrentModificationException をスローします。これは、繰り返し処理中の並行変更が行われた際に、非決定的な動作ではなく、早期に失敗を検出するようなフェイルファスト動作を提供します。
このフィールドをサブクラスで使用するのは任意です。サブクラスでフェイルファスト反復子およびリスト反復子を提供する必要がある場合には、単純に、サブクラスの add(int, Object) メソッドおよび remove(int) メソッド (および、サブクラスがオーバーライドするメソッドのうちで、リストの構造的な変更をするメソッド) の内部で、このフィールドをインクリメントします。add(int, Object) または remove(int) に対する 1 回の呼び出しでは、フィールドに 1 だけ加えます。そうしないと、反復子 (およびリスト反復子) が誤って ConcurrentModificationExceptions をスローすることになります。実装でフェイルファスト反復子を提供しない場合は、このフィールドを無視してもかまいません。
コンストラクタの詳細 |
---|
protected AbstractList()
メソッドの詳細 |
---|
public boolean add(Object o)
この実装は add(size(), o) を呼び出します。
この実装は、add(int, Object) がオーバーライドされないかぎり UnsupportedOperationException をスローします。
Collection
内の add
List
内の add
AbstractCollection
内の add
o
- リストに追加される要素
UnsupportedOperationException
- セットが add メソッドをサポートしていない場合
ClassCastException
- 指定された要素のクラスのために、セットに要素を追加できない場合
IllegalArgumentException
- この要素の特性が原因で、このコレクションに追加できなかった場合public abstract Object get(int index)
List
内の get
index
- 返される要素のインデックス
IndexOutOfBoundsException
- 指定されたインデックスが範囲外の場合 (index < 0 || index >= size())public Object set(int index, Object element)
この実装は、常に UnsupportedOperationException をスローします。
List
内の set
index
- 置換される要素のインデックスelement
- 指定された位置に格納される要素
UnsupportedOperationException
- このリストが set メソッドをサポートしていない場合
ClassCastException
- 指定された要素のクラスのために、このリストに要素を追加できない場合
IllegalArgumentException
- この要素の一部の特性のために、このリストに要素を追加できない場合
IndexOutOfBoundsException
- 指定されたインデックスが範囲外の場合 (index < 0 || index >= size())public void add(int index, Object element)
この実装は、常に UnsupportedOperationException をスローします。
List
内の add
index
- 指定の要素が挿入されるインデックスelement
- 挿入される要素
UnsupportedOperationException
- このリストが add メソッドをサポートしていない場合
ClassCastException
- 指定された要素のクラスのために、このリストに要素を追加できない場合
IllegalArgumentException
- この要素の一部の特性のために、このリストに要素を追加できない場合
IndexOutOfBoundsException
- インデックスが範囲外の場合 (index < 0 || index > size())public Object remove(int index)
この実装は、常に UnsupportedOperationException をスローします。
List
内の remove
index
- 削除される要素のインデックス
UnsupportedOperationException
- このリストが remove メソッドをサポートしていない場合
IndexOutOfBoundsException
- 指定されたインデックスが範囲外の場合 (index < 0 || index >= size())public int indexOf(Object o)
この実装は、listIterator() を使って、最初にリスト反復子を取得します。次に、指定された要素が見つかるか、あるいはリストの末尾に達するまで、リストの内容を次々に調べます。
List
内の indexOf
o
- 検索する要素
public int lastIndexOf(Object o)
この実装は、listIterator(size()) を使って、最初にリストの末尾を指すリスト反復子を取得します。次に、指定された要素が見つかるか、あるいはリストの先頭に達するまで、リスト内容を逆方向に次々調べます。
List
内の lastIndexOf
o
- 検索する要素
public void clear()
この実装は、removeRange(0, size()) を呼び出します。
remove(int index) または removeRange(int fromIndex, int toIndex) がオーバーライドされないかぎり、この実装は UnsupportedOperationException をスローします。
Collection
内の clear
List
内の clear
AbstractCollection
内の clear
UnsupportedOperationException
- このコレクションが clear メソッドをサポートしていない場合public boolean addAll(int index, Collection c)
この実装は、指定されたコレクションの反復子を取得し、反復子から取得した要素をこのリストの適切な位置に 1 つずつ挿入する操作を繰り返します。挿入には add(int, Object) メソッドを使用します。多くの場合、実装では、このメソッドをオーバーライドしたほうが効率的です。
この実装は、add(int, Object) がオーバーライドされないかぎり UnsupportedOperationException をスローします。
List
内の addAll
index
- 指定されたコレクションから最初の要素を挿入する位置のインデックスc
- リストに挿入される要素
UnsupportedOperationException
- このリストが addAll メソッドをサポートしていない場合
ClassCastException
- 指定されたコレクションの要素のクラスが原因で、このリストに追加できなかった場合
IllegalArgumentException
- 指定されたコレクションにある要素の特性が原因で、このリストに追加できなかった場合
IndexOutOfBoundsException
- インデックスが範囲外の場合 (index < 0 || index > size())
NullPointerException
- 指定されたコレクションが null である場合public Iterator iterator()
この実装は、反復子インタフェースの簡単な実装を返します。この処理では、基になるリストの size()、get(int)、および remove(int) といった各メソッドを利用します。
このメソッドで返される反復子は、リストの remove(int) メソッドがオーバーライドされないかぎり、remove メソッドを呼び出すと UnsupportedOperationException をスローします。
この実装は、(protected) modCount フィールドの仕様で説明されているように、同時変更を前にして実行時の例外をスローすることもあります。
Collection
内の iterator
List
内の iterator
AbstractCollection
内の iterator
modCount
public ListIterator listIterator()
List
内の listIterator
listIterator(int)
public ListIterator listIterator(int index)
この実装は、ListIterator インタフェースの簡単な実装を返します。ListIterator
インタフェースは、iterator() メソッドによって返される Iterator インタフェースの実装を拡張するものです。ListIterator の実装は、基になるリストの get(int)、set(int, Object)、add(int, Object)、および remove(int) の各メソッドに依存します。
この実装で返されるリスト反復子は、その remove、set、および add の各メソッド呼び出しに対して UnsupportedOperationException をスローすることに注意してください。リストの remove(int)、set(int, Object)、および add(int, Object) の各メソッドをそれぞれオーバーライドしないかぎり、この例外がスローされます。
この実装は、(protected) modCount フィールドの仕様で説明されているように、同時変更を前にして実行時の例外をスローすることもあります。
List
内の listIterator
index
- next メソッドの呼び出しによってリスト反復子から返される最初の要素のインデックス
IndexOutOfBoundsException
- 指定されたインデックスが範囲外の場合 (index < 0 || index > size())modCount
public List subList(int fromIndex, int toIndex)
このメソッドは、配列に一般的に見られるような、明示的な範囲操作のための要求を不要にします。リストを必要とする操作はどれも、リスト全体ではなく、subList ビュー上で操作することで、範囲操作として使用できます。たとえば、次の慣用法は、指定された範囲の要素をリストから削除します。
list.subList(from, to).clear();indexOf および lastIndexOf でも、同様の慣用法を作成できます。Collections クラスのアルゴリズムがすべて subList に適用できます。
バッキングリスト (すなわち、このリスト) の構造が、返されたリストを経由せずに変更された場合、このメソッドで返されたリストのセマンティクスは保証されません。構造の変更とは、リストのサイズが変わるような変更や、進行中の繰り返し処理が不正な結果に終わるような変更のことです。
この実装は、AbstractList をサブクラス化するリストを返します。このサブクラスは、専用フィールドに、バッキングリスト内の subList のオフセット、subList のサイズ (存続期間中に変更することも可能)、およびバッキングリストの要求される modCount 値を格納します。サブクラスにはバリアントが 2 つあり、そのうちの 1 つには RandomAccess が実装されています。このリストが RandomAccess を実装すると、返されたリストは RandomAccess を実装するサブクラスのインスタンスになります。
サブクラスの set(int, Object)、get(int)、add(int, Object)、remove(int)、addAll(int, Collection)、および removeRange(int, int) の各メソッドは、インデックスの境界を調べ、オフセットに合わせて調整したあとで、バッキング抽象リストの対応するメソッドにすべて委譲します。addAll(Collection c) メソッドは、単に addAll(size,c) を返すだけです。
listIterator(int) メソッドは、バッキングリストのリスト反復子への「ラッパーオブジェクト」を返します。この「ラッパーオブジェクト」は、バッキングリストの対応するメソッドで作成されます。iterator メソッドは listIterator() を返すだけであり、同様に、size メソッドはサブクラスの size フィールドを返すだけです。
すべてのメソッドは、最初に、バッキングリストの実際の modCount がその要求された値に等しいかを調べ、そうでない場合は ConcurrentModificationException をスローします。
List
内の subList
fromIndex
- subList の下端点 (これを含む)toIndex
- subList の上端点 (これを含まない)
IndexOutOfBoundsException
- 端点のインデックス値が範囲外の場合 (fromIndex < 0 || toIndex > size)
IllegalArgumentException
- 端点のインデックス値が不正な場合 (fromIndex > toIndex)public boolean equals(Object o)
Collection
内の equals
List
内の equals
Object
内の equals
o
- リストと等しいかどうかを比較するオブジェクト
Object.hashCode()
,
Hashtable
public int hashCode()
この実装では、List.hashCode メソッドのドキュメントでリストハッシュ関数を定義するのに使われているコードをそのまま使っています。
Collection
内の hashCode
List
内の hashCode
Object
内の hashCode
Object.equals(java.lang.Object)
,
Hashtable
protected void removeRange(int fromIndex, int toIndex)
このメソッドは、このリストおよびそのサブリストで clear オペレーションによって呼び出されます。このメソッドをオーバーライドしてリストの実装の特性を最大限に利用するようにすると、このリストおよびそのサブリストに対する clear オペレーションの性能がかなり向上します。
この実装は、fromIndex の前に位置するリスト反復子を取得し、範囲全体が削除されるまで ListIterator.next と ListIterator.remove をこの順序で繰り返し呼び出します。注:ListIterator.remove が線形時間 (O(n)) を必要とする場合、この実装では quadratic time (O(n^2)) が必要です。
fromIndex
- 削除する最初の要素のインデックスtoIndex
- 削除する最後の要素の直後のインデックス
|
Foundation 1.1.2 | |||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。