JavaTM 2
Platform
Std. Ed. v1.4.0

java.util
クラス ArrayList

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

public class ArrayList
extends AbstractList
implements List, RandomAccess, Cloneable, Serializable

List インタフェースのサイズ変更可能な配列の実装です。リストの任意のオペレーションをすべて実装し、null を含むすべての要素を許容します。このクラスは、List インタフェースを実装するほか、リストを格納するために内部的に使われる配列のサイズを操作するメソッドを提供します。(このクラスは、同期化されないことを除いて Vector とほぼ同等です。)

sizeisEmptygetsetiterator、および 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 をスローします。したがって、訂正するためにこの例外に依存したプログラムを書くことは誤りです。 すなわち、反復子のフェイルファスト動作はバグの検出のためだけに使用すべきです。

導入されたバージョン:
1.2
関連項目:
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 のすべての要素を追加します。
 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)
          この List から、fromIndex に始まり toIndex の直前までのインデックスを持つすべての要素を削除します。
 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
 

コンストラクタの詳細

ArrayList

public ArrayList(int initialCapacity)
指定された初期サイズで空のリストを作成します。

パラメータ:
initialCapacity - リストの初期容量
例外:
IllegalArgumentException - 指定された初期容量が負の場合

ArrayList

public ArrayList()
初期容量 10 で空のリストを作成します。


ArrayList

public ArrayList(Collection c)
指定されたコレクションの要素を含むリストを作成します。これらの要素は、コレクションの反復子が返す順序で格納されます。ArrayList のインスタンスの初期サイズは、指定されたコレクションのサイズの 110% です。

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

trimToSize

public void trimToSize()
この ArrayList のインスタンスのサイズをリストの現在のサイズに縮小します。アプリケーションでは、このオペレーションで ArrayList のインスタンスの格納サイズを最小にすることができます。


ensureCapacity

public void ensureCapacity(int minCapacity)
必要に応じて、この ArrayList のインスタンスのサイズを拡大し、少なくとも最小サイズ引数で指定された数の要素を格納できるようにします。

パラメータ:
minCapacity - 保証したい最小容量

size

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

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

isEmpty

public boolean isEmpty()
リストに要素がないかどうかを判定します。

定義:
インタフェース List 内の isEmpty
オーバーライド:
クラス AbstractCollection 内の isEmpty
戻り値:
リストに要素がない場合は true、そうでない場合は false

contains

public boolean contains(Object elem)
リストに指定の要素がある場合に true を返します。

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

indexOf

public int indexOf(Object elem)
equals メソッドを使って等しいかどうかを判定しながら、指定された引数と同じ内容の要素を先頭から検索します。

定義:
インタフェース List 内の indexOf
オーバーライド:
クラス AbstractList 内の indexOf
パラメータ:
elem - オブジェクト
戻り値:
リスト内で引数が最初に現れるインデックス。オブジェクトが見つからない場合は -1
関連項目:
Object.equals(Object)

lastIndexOf

public int lastIndexOf(Object elem)
指定されたオブジェクトがリスト内で最後に現れるインデックスを返します。

定義:
インタフェース List 内の lastIndexOf
オーバーライド:
クラス AbstractList 内の lastIndexOf
パラメータ:
elem - 目的の要素
戻り値:
リストで指定のオブジェクトと一致する最後のオブジェクトのインデックス。オブジェクトが見つからない場合は -1

clone

public Object clone()
ArrayList のインスタンスのコピーを返します。要素自体はコピーされません。

オーバーライド:
クラス Object 内の clone
戻り値:
この ArrayList のインスタンスの複製
関連項目:
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 - 配列が十分な大きさを持つ場合は、リストの要素が格納される配列。そうでない場合は、要素を格納するために同じ実行時の型の新しい配列が割り当てられる
戻り値:
リストの要素が格納されている配列
例外:
ArrayStoreException - a の実行時の型がリスト内の各要素の実行時の型のスーパーセットでない場合

get

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

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

set

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

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

add

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

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

add

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

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

remove

public Object remove(int index)
リスト内の指定された位置から要素を削除します。そして、後続の要素を左側に移動し、それぞれのインデックスから 1 を減算します。

定義:
インタフェース List 内の remove
オーバーライド:
クラス AbstractList 内の remove
パラメータ:
index - 削除される要素のインデックス
戻り値:
リストから削除した要素
例外:
IndexOutOfBoundsException - インデックスが範囲外の場合 (index < 0 || index >= size())

clear

public void clear()
リストからすべての要素を削除します。この呼び出しが戻ると、このリストは空になります。

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

addAll

public boolean addAll(Collection c)
リストの末尾に、指定された Collection のすべての要素を追加します。これらの要素は、指定された Collection の Iterator が返す順序で追加されます。このオペレーションの実行中に指定の Collection を変更した場合の、オペレーション動作は定義されていません。これは、指定された Collection がこのリスト自身であり、しかもこのリストが空ではない場合に、この呼び出しの動作が未定義であることを意味します。

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

addAll

public boolean addAll(int index,
                      Collection c)
リスト内の指定された位置から、指定された Collection のすべての要素を挿入します。その時点で、指定された位置に要素がある場合、その位置の要素を移動させ、後続の要素を右側に移動して、それぞれのインデックスを増やします。新しい要素は、指定された Collection の反復子が返す順序でリストに格納されます。

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

removeRange

protected void removeRange(int fromIndex,
                           int toIndex)
この List から、fromIndex に始まり toIndex の直前までのインデックスを持つすべての要素を削除します。後続の要素は左に移動します (インデックス値が減少)。この呼び出しは、(toIndex - fromIndex) の要素数だけリストを短縮します。toIndex==fromIndex の場合、この処理は実行されません。

オーバーライド:
クラス AbstractList 内の removeRange
パラメータ:
fromIndex - 削除する最初の要素のインデックス
toIndex - 削除する最後の要素の直後のインデックス

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.