|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object java.util.AbstractCollection<E> java.util.AbstractList<E>
public abstract class AbstractList<E>
このクラスは、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()
唯一のコンストラクタです。 |
メソッドの概要 | |
---|---|
boolean |
add(E o)
指定された要素をリストの末尾に追加します (任意のオペレーション)。 |
void |
add(int index,
E element)
リスト内の指定された位置に、指定された要素を挿入します (任意のオペレーション)。 |
boolean |
addAll(int index,
Collection<? extends E> c)
指定されたコレクションのすべての要素を、このリストの指定された位置に挿入します (任意のオペレーション)。 |
void |
clear()
このコレクションからすべての要素を削除します (任意のオペレーション)。 |
boolean |
equals(Object o)
指定されたオブジェクトとリストが等しいかどうかを比較します。 |
abstract E |
get(int index)
リスト内の指定された位置にある要素を返します。 |
int |
hashCode()
このリストのハッシュコード値を返します。 |
int |
indexOf(Object o)
指定された要素がリスト内で最初に検出された位置のインデックスを返します。 |
Iterator<E> |
iterator()
このリスト内の要素を適切な順序で繰り返し処理する反復子を返します。 |
int |
lastIndexOf(Object o)
指定された要素がリスト内で最後に検出された位置のインデックスを返します。 |
ListIterator<E> |
listIterator()
このリスト内の要素を適切な順序で繰り返し処理する反復子を返します。 |
ListIterator<E> |
listIterator(int index)
リスト内の要素を適切な順序で繰り返し処理する、リスト内の指定された位置から開始する反復子を返します。 |
E |
remove(int index)
リスト内の指定された位置にある要素を削除します (任意のオペレーション)。 |
protected void |
removeRange(int fromIndex,
int toIndex)
このリストから、fromIndex で始まり、toIndex の直前で終わるインデックスを持つすべての要素を削除します。 |
E |
set(int index,
E element)
リスト内の指定された位置にある要素を、指定された要素に置き換えます (任意のオペレーション)。 |
List<E> |
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(E o)
この実装は add(size(), o) を呼び出します。
この実装は、add(int, Object) がオーバーライドされない限り UnsupportedOperationException をスローします。
Collection<E>
内の add
List<E>
内の add
AbstractCollection<E>
内の add
o
- リストに追加される要素
UnsupportedOperationException
- セットが add メソッドをサポートしていない場合
ClassCastException
- 指定された要素のクラスのために、セットに要素を追加できない場合
IllegalArgumentException
- この要素の特性が原因で、このコレクションに追加できなかった場合public abstract E get(int index)
List<E>
内の get
index
- 返される要素のインデックス
IndexOutOfBoundsException
- 指定されたインデックスが範囲外の場合 (index < 0 || index >= size())public E set(int index, E element)
この実装は、常に UnsupportedOperationException をスローします。
List<E>
内の set
index
- 置換される要素のインデックスelement
- 指定された位置に格納される要素
UnsupportedOperationException
- リストが set メソッドをサポートしていない場合
ClassCastException
- 指定された要素のクラスのために、リストに要素を追加できない場合
IllegalArgumentException
- この要素の一部の特性のために、リストに要素を追加できない場合
IndexOutOfBoundsException
- 指定されたインデックスが範囲外の場合 (index < 0 || index >= size())public void add(int index, E element)
この実装は、常に UnsupportedOperationException をスローします。
List<E>
内の add
index
- 指定された要素が挿入されるインデックスelement
- 挿入される要素
UnsupportedOperationException
- リストが add メソッドをサポートしていない場合
ClassCastException
- 指定された要素のクラスのために、リストに要素を追加できない場合
IllegalArgumentException
- この要素の一部の特性のために、リストに要素を追加できない場合
IndexOutOfBoundsException
- インデックスが範囲外の場合 (index < 0 || index > size())public E remove(int index)
この実装は、常に UnsupportedOperationException をスローします。
List<E>
内の remove
index
- 削除される要素のインデックス
UnsupportedOperationException
- リストが remove メソッドをサポートしていない場合
IndexOutOfBoundsException
- 指定されたインデックスが範囲外の場合 (index < 0 || index >= size())public int indexOf(Object o)
この実装は、listIterator() を使って、最初にリスト反復子を取得します。次に、指定された要素が見つかるか、あるいはリストの末尾に達するまで、リストの内容を次々に調べます。
List<E>
内の indexOf
o
- 検索する要素
public int lastIndexOf(Object o)
この実装は、listIterator(size()) を使って、最初にリストの末尾を指すリスト反復子を取得します。次に、指定された要素が見つかるか、あるいはリストの先頭に達するまで、リスト内容を逆方向に次々調べます。
List<E>
内の lastIndexOf
o
- 検索する要素
public void clear()
この実装は、removeRange(0, size()) を呼び出します。
remove(int index) または removeRange(int fromIndex, int toIndex) がオーバーライドされない限り、この実装は UnsupportedOperationException をスローします。
Collection<E>
内の clear
List<E>
内の clear
AbstractCollection<E>
内の clear
UnsupportedOperationException
- このコレクションが clear メソッドをサポートしていない場合public boolean addAll(int index, Collection<? extends E> c)
この実装は、指定されたコレクションの反復子を取得し、反復子から取得した要素をこのリストの適切な位置に 1 つずつ挿入する操作を繰り返します。挿入には add(int, Object) メソッドを使用します。多くの場合、実装では、このメソッドをオーバーライドしたほうが効率的です。
この実装は、add(int, Object) がオーバーライドされない限り UnsupportedOperationException をスローします。
List<E>
内の addAll
index
- 指定されたコレクションから最初の要素を挿入する位置のインデックスc
- リストに挿入される要素
UnsupportedOperationException
- リストが addAll メソッドをサポートしていない場合
ClassCastException
- 指定されたコレクションの要素のクラスが原因で、このリストに追加できなかった場合
IllegalArgumentException
- 指定されたコレクションにある要素の特性が原因で、リストに追加できなかった場合
IndexOutOfBoundsException
- インデックスが範囲外の場合 (index < 0 || index > size())
NullPointerException
- 指定されたコレクションが null である場合public Iterator<E> iterator()
この実装は、反復子インタフェースの簡単な実装を返します。この処理では、基になるリストの size()、get(int)、および remove(int) といった各メソッドを利用します。
このメソッドで返される反復子は、リストの remove(int) メソッドがオーバーライドされない限り、remove メソッドを呼び出すと UnsupportedOperationException をスローします。
この実装は、(protected) modCount フィールドの仕様で説明されているように、同時変更を前にして実行時の例外をスローすることもあります。
Iterable<E>
内の iterator
Collection<E>
内の iterator
List<E>
内の iterator
AbstractCollection<E>
内の iterator
modCount
public ListIterator<E> listIterator()
List<E>
内の listIterator
listIterator(int)
public ListIterator<E> 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<E>
内の listIterator
index
- next メソッドの呼び出しによってリスト反復子から返される最初の要素のインデックス
IndexOutOfBoundsException
- 指定されたインデックスが範囲外の場合 (index < 0 || index > size())modCount
public List<E> 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<E>
内の subList
fromIndex
- subList の下端点 (これを含む)toIndex
- subList の上端点 (これを含まない)
IndexOutOfBoundsException
- 端点のインデックス値が範囲外の場合 (fromIndex < 0 || toIndex > size)
IllegalArgumentException
- 端点のインデックス値が不正な場合 (fromIndex > toIndex)public boolean equals(Object o)
この実装は、最初に、指定されたオブジェクトがこのリストであるかどうかを調べます。このリストである場合、実装は true を返します。そうでない場合は、指定されたオブジェクトがリストかどうかを調べ、リストでなければ false を返します。指定されたオブジェクトがリストの場合は、両方のリストの内容を次々調べて、要素の対応するペアを比較します。比較の結果 false が返されることがあれば、このメソッドも false を返します。どちらかのリストの反復子の要素が先になくなった場合は、2 つのリストの長さが等しくないので false を返します。そうでない場合は、繰り返しが完了した時点で true を返します。
Collection<E>
内の equals
List<E>
内の equals
Object
内の equals
o
- リストと等しいかどうかを比較するオブジェクト
Object.hashCode()
,
Hashtable
public int hashCode()
この実装では、List.hashCode メソッドのドキュメントでリストハッシュ関数を定義するのに使われているコードをそのまま使っています。
Collection<E>
内の hashCode
List<E>
内の 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 が 1 次時間を必要とする場合、この実装では 2 次時間が必要です。
fromIndex
- 削除する最初の要素のインデックスtoIndex
- 削除する最後の要素の直後のインデックス
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。