Java プラットフォーム 1.2

java.util
クラス ArrayList

java.lang.Object
  |
  +--java.util.AbstractCollection
        |
        +--java.util.AbstractList
              |
              +--java.util.ArrayList

public class ArrayList
extends AbstractList
implements List, 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 をスローします。したがって、同時変更が行われると、反復子は、将来の予測できない時点において予測できない動作が発生する危険を回避するために、速やかにかつクリーンに失敗します。

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

クラス java.util.AbstractList から継承したフィールド
modCount
 
コンストラクタの概要
ArrayList()
          空のリストを作成します。
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
 

コンストラクタの詳細

ArrayList

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

ArrayList

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

ArrayList

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

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
戻り値:
リストに要素がない場合は true、そうでない場合は false
オーバーライド:
クラス AbstractCollection 内の isEmpty

contains

public boolean contains(Object elem)
リストに指定の要素がある場合に true を返します。
定義:
インタフェース List 内の contains
パラメータ:
elem - ArrayList にあるかどうかが判定される要素
オーバーライド:
クラス AbstractCollection 内の contains

indexOf

public int indexOf(Object elem)
equals メソッドで同等であるかどうかを判定することによって、指定された引数と一致する最初のオブジェクトを検索します。
定義:
インタフェース List 内の indexOf
パラメータ:
elem - オブジェクト
戻り値:
リストで引数と一致する最初のオブジェクトのインデックス。オブジェクトが見つからない場合は -1
オーバーライド:
クラス AbstractList 内の indexOf
関連項目:
Object.equals(Object)

lastIndexOf

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

clone

public Object clone()
ArrayList のインスタンスのコピーを返します。要素自体はコピーされません。
戻り値:
この ArrayList のインスタンスの複製
オーバーライド:
クラス Object 内の clone

toArray

public Object[] toArray()
リストのすべての要素を正しい順序で含む配列を返します。
定義:
インタフェース List 内の toArray
戻り値:
リストのすべての要素を正しい順序で含む配列
オーバーライド:
クラス AbstractCollection 内の toArray

toArray

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

指定された配列にリストが収まり、その配列にさらに余分な領域がある場合、つまり配列にリストより多くの要素がある場合、配列でコレクションの末尾に続く要素は null に設定されます。これは、リストの長さを調べるときに便利です。ただし呼び出し側で、リストに null 要素がないことがわかっている場合に限ります。

定義:
インタフェース List 内の toArray
パラメータ:
a - 配列のサイズが十分に大きい場合は、リストの要素を格納する配列、そうでない場合は、この処理に同じ実行時の型の新しい配列が割り当てられる
戻り値:
リストの要素を含む配列
例外:
ArrayStoreException - a の実行時の型が、リストに含まれる各要素の実行時の型のスーパータイプでない場合
オーバーライド:
クラス AbstractCollection 内の toArray

get

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

set

public Object set(int index,
                  Object element)
リスト内の指定された位置にある要素を、指定された要素で置き換えます。
定義:
インタフェース List 内の set
パラメータ:
index - 置き換える要素のインデックス
element - 指定された位置に格納する要素
戻り値:
これまで指定された位置にあった要素
例外:
IndexOutOfBoundsException - インデックスが範囲外の場合 (index < 0 || index >= size())
オーバーライド:
クラス AbstractList 内の set

add

public boolean add(Object o)
リストの末尾に、指定された要素を追加します。
定義:
インタフェース List 内の add
パラメータ:
o - リストに追加する要素
戻り値:
true (Collection.add の一般規約に従う)
オーバーライド:
クラス AbstractList 内の add

add

public void add(int index,
                Object element)
リスト内の指定された位置に、指定された要素を挿入します。その時点で、指定された位置に要素がある場合には、その位置の要素をシフトし、後続の要素を右側にシフトして、それぞれのインデックスに 1 を加算します。
定義:
インタフェース List 内の add
パラメータ:
index - 指定された要素の挿入先のインデックス
element - 挿入する要素
例外:
IndexOutOfBoundsException - インデックスが範囲外の場合 (index < 0 || index > size())
オーバーライド:
クラス AbstractList 内の add

remove

public Object remove(int index)
リスト内の指定された位置から要素を削除します。そして、後続の要素を左側にシフトし、それぞれのインデックスから 1 を減算します。
定義:
インタフェース List 内の remove
パラメータ:
index - 削除する要素のインデックス
戻り値:
リストから削除した要素
例外:
IndexOutOfBoundsException - インデックスが範囲外の場合 (index < 0 || index >= size())
オーバーライド:
クラス AbstractList 内の remove

clear

public void clear()
リストからすべての要素を削除します。この呼び出しが復帰すると、このリストは空になります。
定義:
インタフェース List 内の clear
オーバーライド:
クラス AbstractList 内の clear

addAll

public boolean addAll(Collection c)
リストの末尾に、指定された Collection のすべての要素を追加します。これらの要素は、指定された Collection の Iterator が返す順序で追加されます。このオペレーションの実行中に指定の Collection を変更した場合、オペレーション動作は不定になります。これは、指定された Collection がこのリスト自身であり、しかもこのリストが空ではない場合に、この呼び出しの動作が不定になることを意味します。
定義:
インタフェース List 内の addAll
パラメータ:
index - 指定されたコレクションの最初の要素の挿入先を示すインデックス
c - リストに挿入する要素
例外:
IndexOutOfBoundsException - インデックスが範囲外の場合 (index < 0 || index > size())
オーバーライド:
クラス AbstractCollection 内の addAll

addAll

public boolean addAll(int index,
                      Collection c)
リスト内の指定された位置から、指定された Collection のすべての要素を挿入します。その時点で、指定された位置に要素がある場合、その位置の要素をシフトし、後続の要素を右側にシフトして、それぞれのインデックスを増やします。新しい要素は、指定された Collection の反復子が返す順序でリストに格納されます。
定義:
インタフェース List 内の addAll
パラメータ:
index - 指定されたコレクションの最初の要素の挿入先を示すインデックス
c - リストに挿入する要素
例外:
IndexOutOfBoundsException - インデックスが範囲外の場合 (index < 0 || index > size())
オーバーライド:
クラス AbstractList 内の addAll

removeRange

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

Java プラットフォーム 1.2

バグや機能要求の報告
新しい javadoc の表示についてのコメントやご提案
Java は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-1998 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.