|
CDC 1.1.2 | |||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object java.util.AbstractCollection java.util.AbstractList java.util.ArrayList
public class ArrayList
List インタフェースのサイズ変更可能な配列の実装です。リストの任意のオペレーションをすべて実装し、null を含むすべての要素を許容します。このクラスは、List インタフェースを実装するほか、リストを格納するために内部的に使われる配列のサイズを操作するメソッドを提供します (このクラスは、同期化されないことを除いて Vector とほぼ同等)。
size、isEmpty、get、set、iterator、および listIterator の処理は、一定の時間で実行されます。add の処理も、一定の償却時間で実行されます。 つまり、n 個の要素を追加するには O(n) 時間が必要です。ほとんどの場合、ほかのすべての処理も比例的な時間で実行されます。定数の係数は、LinkedList の実装の場合より小さくなります。
各 ArrayList のインスタンスには、「サイズ」があります。それは、リストの要素を格納するために使用する配列のサイズで、常にリストのサイズ以上の大きさになります。ArrayList に要素を追加すると、そのサイズは自動的に拡大します。拡大のポリシーについては、要素を追加すると「一定の償却時間コスト」が伴うこと以外は、詳しくは指定されていません。
アプリケーションでは、ensureCapacity を使って ArrayList のインスタンスのサイズを拡大してから、多くの要素を追加できます。これにより、増加に対する再割り当てが軽減される場合があります。
この実装は同期化されません。複数のスレッドが並行して ArrayList のインスタンスにアクセスし、1 つ以上のスレッドが構造的にリストを変更する場合には、リストを外部的に同期化する必要があります。構造的な変更とは、1 つ以上の要素を追加または削除したり、基になる配列のサイズを明示的に変更したりする処理のことです。 要素の値だけを設定する処理は、構造的な変更ではありません。通常、リストの同期をとるには、リストを自然にカプセル化するオブジェクトで同期をとります。この種のオブジェクトがない場合には、Collections.synchronizedList メソッドを使用してリストを「ラップ」する必要があります。これは、リストへの偶発的な非同期アクセスを防ぐために、作成時に行うのが最適です。
List list = Collections.synchronizedList(new ArrayList(...));
このクラスの iterator および listIterator メソッドによって返される反復子は、「フェイルファスト」です。反復子の作成後に、反復子自体の remove または add メソッドを使用しないでリストを構造的に変更すると、反復子は ConcurrentModificationException をスローします。このように、並行して変更が行われると、反復子は、将来の予測できない時点において予測できない動作が発生する危険を回避するために、ただちにかつ手際よく例外をスローします。
通常、非同期の並行変更がある場合、確かな保証を行うことは不可能なので、反復子のフェイルファストの動作を保証することはできません。フェイルファスト反復子は最善努力原則に基づき、ConcurrentModificationException をスローします。したがって、正確を期すためにこの例外に依存するプログラムを書くことは誤りです。「反復子のフェイルファストの動作はバグを検出するためにのみ使用するべきです」。
このクラスは、Java Collections Framework のメンバーです。
Collection
,
List
,
LinkedList
,
Vector
,
Collections.synchronizedList(List)
,
直列化された形式フィールドの概要 |
---|
クラス java.util.AbstractList から継承されたフィールド |
---|
modCount |
コンストラクタの概要 | |
---|---|
ArrayList()
初期容量 10 で空のリストを作成します。 |
|
ArrayList(Collection c)
指定されたコレクションの要素が含まれているリストを、要素がコレクションの反復子によって返される順序で作成します。 |
|
ArrayList(int initialCapacity)
指定された初期サイズで空のリストを作成します。 |
メソッドの概要 | |
---|---|
void |
add(int index,
Object element)
リスト内の指定された位置に指定された要素を挿入します。 |
boolean |
add(Object o)
リストの最後に、指定された要素を追加します。 |
boolean |
addAll(Collection c)
指定された Collection 内のすべての要素を、指定された Collection の反復子によって返される順序でこのリストの最後に追加します。 |
boolean |
addAll(int index,
Collection c)
指定された Collection 内のすべての要素を、このリストの指定された位置に挿入します。 |
void |
clear()
リストからすべての要素を削除します。 |
Object |
clone()
ArrayList のインスタンスのシャローコピーを返します。 |
boolean |
contains(Object elem)
リストに指定の要素がある場合に true を返します。 |
void |
ensureCapacity(int minCapacity)
必要に応じて、この ArrayList のインスタンスのサイズを拡大し、少なくとも最小サイズ引数で指定された数の要素を格納できるようにします。 |
Object |
get(int index)
リスト内の指定された位置にある要素を返します。 |
int |
indexOf(Object elem)
equals メソッドを使って等しいかどうかを判定しながら、指定された引数と同じ内容の要素を先頭から検索します。 |
boolean |
isEmpty()
リストに要素がないかどうかを判定します。 |
int |
lastIndexOf(Object elem)
指定されたオブジェクトがリスト内で最後に現れるインデックスを返します。 |
Object |
remove(int index)
リストの指定された位置にある要素を削除します。 |
protected void |
removeRange(int fromIndex,
int toIndex)
fromIndex (これを含む) 〜 toIndex (これを含まない) の範囲のインデックスを持つすべての要素をこの List から削除します。 |
Object |
set(int index,
Object element)
リストの指定された位置にある要素を、指定された要素で置き換えます。 |
int |
size()
リスト内にある要素の数を返します。 |
Object[] |
toArray()
リスト内のすべての要素が正しい順序で格納されている配列を返します。 |
Object[] |
toArray(Object[] a)
このリスト内のすべての要素が正しい順序で格納されている配列を返します。 |
void |
trimToSize()
この ArrayList のインスタンスのサイズをリストの現在のサイズに縮小します。 |
クラス java.util.AbstractList から継承されたメソッド |
---|
equals, hashCode, iterator, listIterator, listIterator, subList |
クラス java.util.AbstractCollection から継承されたメソッド |
---|
containsAll, remove, removeAll, retainAll, toString |
クラス java.lang.Object から継承されたメソッド |
---|
finalize, getClass, notify, notifyAll, wait, wait, wait |
インタフェース java.util.List から継承されたメソッド |
---|
containsAll, equals, hashCode, iterator, listIterator, listIterator, remove, removeAll, retainAll, subList |
コンストラクタの詳細 |
---|
public ArrayList(int initialCapacity)
initialCapacity
- リストの初期容量
IllegalArgumentException
- 指定された初期容量が負の場合public ArrayList()
public ArrayList(Collection c)
c
- 要素がリストに配置されるコレクション
NullPointerException
- 指定されたコレクションが null である場合メソッドの詳細 |
---|
public void trimToSize()
public void ensureCapacity(int minCapacity)
minCapacity
- 保証したい最小容量public int size()
Collection
内の size
List
内の size
AbstractCollection
内の size
public boolean isEmpty()
Collection
内の isEmpty
List
内の isEmpty
AbstractCollection
内の isEmpty
public boolean contains(Object elem)
Collection
内の contains
List
内の contains
AbstractCollection
内の contains
elem
- リストにあるかどうかを調べる要素
true
、そうでない場合は false
public int indexOf(Object elem)
List
内の indexOf
AbstractList
内の indexOf
elem
- オブジェクト
Object.equals(Object)
public int lastIndexOf(Object elem)
List
内の lastIndexOf
AbstractList
内の lastIndexOf
elem
- 目的の要素
public Object clone()
Object
内の clone
Cloneable
public Object[] toArray()
Collection
内の toArray
List
内の toArray
AbstractCollection
内の toArray
Arrays.asList(Object[])
public Object[] toArray(Object[] a)
指定された配列にリストが収まり、その配列にさらに余分な領域がある場合、つまり配列にリストより多くの要素がある場合、配列でコレクションの末尾に続く要素は null に設定されます。これは、呼び出し側がリストに null要素が含まれていないことを把握している場合にかぎり、リストの長さを判定するのに利用できます。
Collection
内の toArray
List
内の toArray
AbstractCollection
内の toArray
a
- 配列が十分な大きさを持つ場合は、リストの要素が格納される配列。そうでない場合は、要素を格納するために同じ実行時の型の新しい配列が割り当てられる
ArrayStoreException
- a の実行時の型がこのリスト内の各要素の実行時の型のスーパータイプでない場合public Object get(int index)
List
内の get
AbstractList
内の get
index
- 返される要素のインデックス
IndexOutOfBoundsException
- インデックスが範囲外の場合 (index < 0 || index >= size())public Object set(int index, Object element)
List
内の set
AbstractList
内の set
index
- 置換される要素のインデックスelement
- 指定された位置に格納される要素
IndexOutOfBoundsException
- インデックスが範囲外の場合 (index < 0 || index >= size())public boolean add(Object o)
Collection
内の add
List
内の add
AbstractList
内の add
o
- リストに追加される要素
public void add(int index, Object element)
List
内の add
AbstractList
内の add
index
- 指定の要素が挿入されるインデックスelement
- 挿入される要素
IndexOutOfBoundsException
- インデックスが範囲外の場合 (index < 0 || index > size())public Object remove(int index)
List
内の remove
AbstractList
内の remove
index
- 削除される要素のインデックス
IndexOutOfBoundsException
- インデックスが範囲外の場合 (index < 0 || index >= size())public void clear()
Collection
内の clear
List
内の clear
AbstractList
内の clear
public boolean addAll(Collection c)
Collection
内の addAll
List
内の addAll
AbstractCollection
内の addAll
c
- リストに挿入する要素
NullPointerException
- 指定されたコレクションが null である場合AbstractCollection.add(Object)
public boolean addAll(int index, Collection c)
List
内の addAll
AbstractList
内の addAll
index
- 指定されたコレクションから最初の要素を挿入する位置のインデックスc
- リストに挿入される要素
IndexOutOfBoundsException
- インデックスが範囲外の場合 (index < 0 || index > size())
NullPointerException
- 指定された Collection が null である場合protected void removeRange(int fromIndex, int toIndex)
AbstractList
内の removeRange
fromIndex
- 削除する最初の要素のインデックスtoIndex
- 削除する最後の要素の直後のインデックス
|
CDC 1.1.2 | |||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |