Foundation 1.1.2

java.util
クラス ArrayList

java.lang.Object
  上位を拡張 java.util.AbstractCollection
      上位を拡張 java.util.AbstractList
          上位を拡張 java.util.ArrayList
すべての実装されたインタフェース:
Serializable, Cloneable, Collection, List, RandomAccess

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

このクラスは、Java Collections Framework のメンバーです。

導入されたバージョン:
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 内のすべての要素を、指定された 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
 

コンストラクタの詳細

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()
リスト内にある要素の数を返します。

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

isEmpty

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

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

contains

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

定義:
インタフェース Collection 内の contains
定義:
インタフェース 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()
リスト内のすべての要素が正しい順序で格納されている配列を返します。

定義:
インタフェース Collection 内の toArray
定義:
インタフェース List 内の toArray
オーバーライド:
クラス AbstractCollection 内の toArray
戻り値:
リスト内のすべての要素が正しい順序で格納されている配列
関連項目:
Arrays.asList(Object[])

toArray

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

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

定義:
インタフェース Collection 内の toArray
定義:
インタフェース 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)
リストの最後に、指定された要素を追加します。

定義:
インタフェース Collection 内の add
定義:
インタフェース 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()
リストからすべての要素を削除します。この呼び出しが戻ると、このリストは空になります。

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

addAll

public boolean addAll(Collection c)
指定された Collection 内のすべての要素を、指定された Collection の反復子によって返される順序でこのリストの最後に追加します。このオペレーションの動作は、指定された Collection がオペレーションの進行時に変更されると定義されません。つまり、指定された Collection がこのリスト自身であり、リストが空でない場合、この呼び出しの動作は保証されません。

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

addAll

public boolean addAll(int index,
                      Collection c)
指定された Collection 内のすべての要素を、このリストの指定された位置に挿入します。その位置とそれ以降に要素がある場合は、それらを右に移動して、各要素のインデックスに 1 を加えます。新しい要素は、指定された Collection の反復子によって返される順番でリストに挿入されます。

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

removeRange

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

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

Foundation 1.1.2

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。