appendix> util> Collection TOPUPPREVNEXT

インターフェース java.util.Collection<E>

【主な機能】

データの集まりを構成し、要素を追加したり、削除したりするためのインターフェースです。
J2SE 5.0 で機能が大幅に拡張されました。 バージョン 5.0 の機能を解説します。

重複のないデータの集まりを扱うのが Set です。
各データをインデックス(番号)によって識別できるようにしたものが List です。 一般に要素の重複が許されます。
データの待ち行列をつくり、 データの投入や取り出しのインターフェースを提供するのが Queue です。
Map は キー(Set)と値(Collection)を対応付けます。

1字違いの java.util.Collections クラスが あります。コレクションを扱う static メソッドの集まりです。

【インターフェースの階層】

collections-framework

Collection および Map 以下の9つのインターフェースは総称して Collections Framework と呼ばれます。

Collection インターフェースを実装するクラスの継承関係

Map インターフェースを実装するクラスの継承関係

Iterable のメソッド】

Collection インターフェースは、 java.lang.Iterable インターフェースを継承しています。 といっても Iterable インターフェースは次の1つのメソッドを定めているだけです。

メソッド機能
Iterator<T> iterator ( ) 型 T の要素を順にアクセスするイテレータを返します。
J2SE 1.4 以前では <T> がかけませんから、イテレータの next() メソッドの値は Object クラスになります。
Iterator の例

つまり、Collection インターフェースを実装するクラスには Iterator を返す iterator メソッドがあり、 Iterator を使って全データを順にアクセスすることができる、あるいは逆に、 Collection インターフェースを実装する場合には iterator メソッドを用意しなければならない、ということになります。

Collection<E> で実装するメソッド】

オブジェクトを集め、追加、削除するためのインターフェースです。 集められた個々のオブジェクトを要素といいます。 要素どうしが equals になる(重複した要素)を許す実装も、許さない実装も可能です。 要素を順序付けする実装も、順序を保障しない実装もあります。 特定のクラスの要素を許さない実装も、特定のクラスの要素からなる実装も可能です。 要素の追加・削除をみとめない実装も可能です。

機能欄に [任意] とあるのは上記のようなサポートをする・しない、 サポートしていない機能を使った場合に例外を発生させる・させない、 を実装する際に選択できるという意味です。 [任意] に関連する主な例外には以下のものがあります。

UnsupportedOperationException
このメソッドがサポートされていない
ClassCastException
要素のクラスが対象外
NullPointerException
の要素を許さない
IllegalArgumentException
その他の制限

メソッド欄の E は 型パラメータ です。 次のものを表しています。

E  コレクションの要素のクラス名
? extends E  クラス E かその子クラス、またはインターフェース E を実装するクラス
?  任意のクラス

<T> は型変数の宣言とよばれ、 任意のクラス T について T[] toArray(T[] a) というインターフェースが提供されるという意味になります。 たとえば、 T を String とすると、次のような記述が説明の対象であり、 xxx が機能欄の 「このコレクション」 に該当します。

String[] xxx.toArray(new String[0])

String[] a;
  ...
String[] xxx.toArray(a)

メソッド機能
boolean add ( E e ) このコレクションに、要素 e を追加します。[任意]
boolean addAll (
Collection<? extends E> c)
c の全要素をこのコレクションに追加します。 [任意]
c には要素を E に限定したコレクション、 または要素を E の子クラスに限定したコレクションを指定できます。
void clear ( ) このコレクションからすべての要素を削除します。[任意]
boolean contains ( Object e ) このコレクションに要素 e が含まれている場合に true。
boolean containsAll (
Collection<?> c)
c の全要素がこのコレクションに含まれる場合 true。
boolean equals ( Object o ) このコレクションと o が等しい場合に true。
int hashCode ( ) コレクションのハッシュコード。
boolean isEmpty ( ) このコレクションに要素が1つもない場合 true。
Iterator<E> iterator ( ) このコレクションのイテレータ。
boolean remove ( Object e ) このコレクションから要素 e を削除します。 [任意]
boolean removeAll (
Collection<?> c)
このコレクションから、c を削除します。 [任意]
boolean retainAll (
Collection<?> c)
このコレクションのうち、c に含まれるものだけを残します。 [任意]
int size ( ) このコレクションの要素数。
Object [ ] toArray ( ) このコレクションのすべての要素を含む配列。 順序があるコレクションであればその順に設定されます。
<T> T [ ] toArray ( T [ ] a ) このコレクションのすべての要素を含む配列を aに設定します。 このコレクションの要素は T クラスであることが判っています。 a の長さががこのコレクションの要素より多ければ、 あまった部分には null がつめられます。 少なければ、あらたに T 型の配列が生成されます。

Queue<E> で実装するメソッド】

通常は、先入れ先出し(FIFO)ですが、後入れ先出し(LIFO)や優先度付待ち行列を実装することも可能です。 Stack クラスは Vector クラス(List インターフェースを実装)を継承しています。

Collection インターフェースで実装されるメソッドの他に、以下の5つのメソッドを実装します。

メソッド機能
E element ( ) キューの先頭要素。 キューが空の場合は、NoSuchElementException がスローされます。
E peek ( ) キューの先頭要素。キューが空の場合は null。
E remove ( ) キューの先頭要素。先頭要素は削除されます。 キューが空の場合は、NoSuchElementException がスローされます。
E poll ( ) キューの先頭要素。先頭要素は削除されます。 キューが空の場合は null。
boolean offer ( E e ) e を このキューに挿入。 挿入できれば true 、できなければ false 。

List<E> で実装するメソッド】

メソッド機能
boolean add ( E e ) このリストの最後に要素 e を追加します。[任意]
boolean add ( int ind, E e ) リストの ind 番目の要素として e を追加します。[任意]
先頭は 0 番目。
boolean addAll (
int ind,
Collection<? extends E> c)
c の全要素を(イテレータで獲得する順に) このリストの後に追加します。 [任意]
boolean addAll (
Collection<? extends E> c)
このリストの ind 番目以降に c の全要素を追加します。 [任意]
void clear ( ) このリストからすべての要素を削除します。[任意]
boolean contains ( Object e ) このリストに要素 e が含まれている場合に true。
boolean containsAll (
Collection<?> c)
c の全要素がこのコレクションに含まれる場合 true。
boolean equals ( Object o ) このリストと o が等しい場合に true。
E get ( int ind ) このリストの ind 番目の要素。 先頭は 0 。
int hashCode ( ) このリストのハッシュコード。
int indexOf ( Object o ) o がこのリストの何番目にあるかを返します。 複数ある場合は若い番号のものが返されます。
boolean isEmpty ( ) このリストに要素が1つもない場合 true。
Iterator<E> iterator ( ) このリストのイテレータ。
int lastIndexOf ( Object o ) o がこのリストの何番目にあるかを返します。 複数ある場合は番号の最も大きいものが返されます。
ListIterator<E> listIterator ( ) このリストのイテレータを返します。
ListIterator<E> listIterator ( int ind ) このリストの ind から始まるイテレータを返します。
E remove ( int ind ) このリストの ind 番目の要素を削除し、 それ以降を前につめます。 削除した要素が値として返されます。 [任意]
boolean remove ( Object e ) このリストに含まれる最初の e を削除します。 [任意]
削除できた場合 true 、 削除できなかった場合 false 。
boolean removeAll (
Collection<?> c)
このリストから c の要素をを削除します。 [任意]
ひとつでも削除できれば true 。
boolean retainAll (
Collection<?> c)
このリストのうち、c に含まれるものだけを残します。 [任意]
リストが変更された場合 ture 。
E set ( int ind, E e ) このリストの ind 番目を e に置き換え、もとの値を返します。
int size ( ) このリストの要素数。
List<E> subList (
int start , int end )
このリストの start (これを含む)から end (これを含まない)までの部分。 新しいリストが作られるのではなく、 もとのリストのこの部分を参照するビューが返されます。 この部分についてコレクションやリストでサポートしている全てのメソッドが使えます。
Object [ ] toArray ( ) このリストのすべての要素をその順に含む配列。
<T> T [ ] toArray ( T [ ] a ) このリストのすべての要素をその順に含む配列を aに設定します。 リストの要素は T クラスであることが判っています。 a の長さががこのコレクションの要素より多ければ、 あまった部分には null がつめられます。 少なければ、あらたに T 型の配列が生成されます。

Set<E> で実装するメソッド】

メソッド機能
boolean add ( E e ) このセットに要素 e がない場合に追加します。[任意]
追加できた場合 true 。
boolean addAll (
Collection<? extends E> c)
c の全要素をこのセットに追加します。 [任意]
重複した要素は追加されず和集合が作られます。 このセットが変更された場合 true 。
void clear ( ) このセットからすべての要素を削除します。[任意]
boolean contains ( Object e ) このセットに要素 e が含まれている場合に true。
boolean containsAll (
Collection<?> c)
c の全要素がこのセットに含まれる場合 true。
boolean equals ( Object o ) このリストと o が等しい場合に true。
int hashCode ( ) このセットのハッシュコード。
boolean isEmpty ( ) このセットに要素が1つもない場合 true。
Iterator<E> iterator ( ) このセットのイテレータ。
boolean remove ( Object e ) このコレクションから要素 e を削除します。 [任意]
削除できた場合 true 、 要素がなかった場合 false 。
boolean removeAll (
Collection<?> c)
c を削除します。 [任意]
ひとつでも削除できた場合は true 。
boolean retainAll (
Collection<?> c)
このセットのうち、c に含まれるものだけを残します。 [任意]
2つのセットの共通部分になります。セットが変更された場合 true 。
int size ( ) このセットの要素数。
Object [ ] toArray ( ) このコレクションのすべての要素を含む配列。
<T> T [ ] toArray ( T [ ] a ) このコレクションのすべての要素を含む配列。

更新日:2005-07-27