JavaTM 2 Platform
Std. Ed. v1.3

java.util
インタフェース Collection

既知のサブインタフェースの一覧:
BeanContext, BeanContextServices, List, Set, SortedSet
既知の実装クラスの一覧:
AbstractCollection

public interface Collection

「コレクション階層」のルートインタフェースです。コレクションは、その「要素」であるオブジェクトのグループを表します。コレクションによっては要素の重複を許可しますが、許可しないコレクションもあります。また、順序付けられているコレクションとそうでないコレクションがあります。SDK は、このインタフェースの「直接」の実装を一切提供しません。Set および List のような、より用途の特定されたサブインタフェースを提供します。このインタフェースは、通常は、最大限の普遍性が求められる場面でコレクションを渡したり、そのコレクションを操作するために使用されます。

「Bag」または「マルチセット」(重複要素を格納できる、順序付けのないコレクション) は、このインタフェースを直接実装する必要があります。

汎用 Collection 実装クラス (通常、サブインタフェースを介して間接的に Collection を実装する) は、2 つの「標準」コンストラクタを提供しなければなりません。空のコレクションを作成する void (引数なし) コンストラクタと、Collection 型の引数を 1 つ持ち、その引数と同じ要素で新しいコレクションを作成するコンストラクタです。したがって、後者のコンストラクタでは、ユーザはどのコレクションでもコピーでき、希望の実装型のコレクションと完全に同じコレクションを生成できます。この規約は義務づけられているわけではありませんが (インタフェースはコンストラクタを格納できないため)、SDK におけるすべての汎用 Collection の実装はこの規約に準拠しています。

導入されたバージョン:
1.2
関連項目:
Set, List, Map, SortedSet, SortedMap, HashSet, TreeSet, ArrayList, LinkedList, Vector, Collections, Arrays, AbstractCollection

メソッドの概要
 boolean add(Object o)
          コレクションが指定された要素を格納するようにします (任意のオペレーション)。
 boolean addAll(Collection c)
          指定されたコレクションのすべての要素をこのコレクションに追加します (任意のオペレーション)。
 void clear()
          コレクションからすべての要素を削除します (任意のオペレーション)。
 boolean contains(Object o)
          コレクションに指定された要素がある場合に true を返します。
 boolean containsAll(Collection c)
          このコレクション内に、指定されたコレクションのすべての要素がある場合に true を返します。
 boolean equals(Object o)
          指定されたオブジェクトとこのコレクションが等しいかどうかを比較します。
 int hashCode()
          コレクションのハッシュコード値を返します。
 boolean isEmpty()
          コレクションに要素がない場合に true を返します。
 Iterator iterator()
          コレクションの要素の反復子を返します。
 boolean remove(Object o)
          指定された要素の 1 つのインスタンスがこのコレクション内にある場合に、それをこのコレクションから削除します (任意のオペレーション)。
 boolean removeAll(Collection c)
          指定されたコレクションにも格納されているこのコレクションのすべての要素を削除します (任意のオペレーション)。
 boolean retainAll(Collection c)
          このコレクションにおいて、指定されたコレクションに格納されている要素だけを保持します (任意のオペレーション)。
 int size()
          コレクションの要素数を返します。
 Object[] toArray()
          コレクションのすべての要素が格納されている配列を返します。
 Object[] toArray(Object[] a)
          コレクションのすべての要素が格納されている配列を返します。
 

メソッドの詳細

size

public int size()
コレクションの要素数を返します。このコレクションに Integer.MAX_VALUE より多くの要素がある場合は、Integer.MAX_VALUE を返します。
戻り値:
コレクションの要素数

isEmpty

public boolean isEmpty()
コレクションに要素がない場合に true を返します。
戻り値:
コレクションに要素がない場合は true

contains

public boolean contains(Object o)
コレクションに指定された要素がある場合に true を返します。すなわち、このコレクションに (o==null ? e==null : o.equals(e)) である要素 e が 1 つ以上ある場合にだけ true を返します。
パラメータ:
o - コレクションにあるかどうかを調べる要素
戻り値:
コレクションに指定された要素がある場合は true

iterator

public Iterator iterator()
コレクションの要素の反復子を返します。要素が返される順序についての保証はありません。ただし、このコレクションが、保証を提供するクラスのインスタンスである場合は例外です。
戻り値:
このコレクションの要素の Iterator

toArray

public Object[] toArray()
コレクションのすべての要素が格納されている配列を返します。反復子によって返される要素の順序を保証しているコレクションの場合、このメソッドは同じ順序で要素を返さなければなりません。

返される配列への参照をコレクションが維持しないという点で、この配列は安全です。つまり、このメソッドは、コレクションが配列を基にしている場合でも新しい配列を割り当てます。このため、呼び出し側は、返された配列を自由に変更できます。

メソッドは、配列ベースの API とコレクションベースの API の間の橋渡し役として機能します。

戻り値:
コレクションのすべての要素が格納されている配列

toArray

public Object[] toArray(Object[] a)
コレクションのすべての要素が格納されている配列を返します。コレクションの実行時の型は、指定された配列の実行時の型です。コレクションが指定された配列に収まる場合、そのコレクションはその配列で返されます。そうでない場合、指定された配列の実行時の型、およびこのコレクションのサイズを使って新しい配列が割り当てられます。

コレクションが指定された配列に収まり、その配列にさらに余裕がある場合 (つまり、配列がコレクションより多くの要素を持つ場合)、その配列内でコレクションの終端よりあとの要素は null に設定されます。コレクションに null 要素がないことを呼び出し側が知っている場合にだけ、この特性を利用してコレクションの長さを判断できます。

反復子によって要素が返される順序をコレクションが保証する場合、このメソッドは同じ順序で要素を返さなければなりません。

toArray メソッドと同じように、このメソッドは、配列ベースの API とコレクションベースの API の間の橋渡し役として機能します。さらに、このメソッドでは、出力配列の実行時の型を正確に制御できるため、環境によっては割り当ての手間を抑えることができます。

l が、文字列だけからなる List であることがわかっていると仮定します。次のコードを使うと、新しく割り当てられた String の配列にリストのダンプを収集できます。

     String[] x = (String[]) v.toArray(new String[0]);
 

toArray(new Object[0]) は、機能の点で toArray() と同一です。

パラメータ:
a - コレクションの要素の格納先の配列。配列のサイズが十分でない場合は、同じ実行時の型で新しい配列が格納用として割り当てられる
戻り値:
コレクションの要素を含む配列
例外:
ArrayStoreException - 指定された配列の実行時の型が、このコレクションの各要素の実行時の型のスーパータイプではない場合

add

public boolean add(Object o)
コレクションが指定された要素を格納するようにします (任意のオペレーション)。この呼び出しの結果、コレクションが変更された場合は true を返します。このコレクションが重複を許可せず、すでに指定された要素を格納している場合は false を返します。

このオペレーションをサポートするコレクションでは、コレクションに追加できる要素について制限がある場合があります。特に、コレクションによっては、null 要素の追加を拒否される場合や、追加できる要素の型が制限される場合があります。追加できる要素の制限については、該当するコレクションクラスのドキュメントに明記するようにしてください。

その要素がすでにあるという以外の理由で特定の要素の追加を拒否する場合、コレクションは false を返すのではなく例外をスローする必要があります。これにより、この呼び出しが戻ったあとにコレクションが指定された要素を必ず格納するという不変性を保つことができます。

パラメータ:
o - コレクションにあるかどうかを調べる要素
戻り値:
この呼び出しの結果、このコレクションが変更された場合は true
例外:
UnsupportedOperationException - このコレクションが add をサポートしない場合
ClassCastException - 指定された要素のクラスが原因で、このコレクションに追加できなかった場合
IllegalArgumentException - この要素の特性が原因で、このコレクションに追加できなかった場合

remove

public boolean remove(Object o)
指定された要素の 1 つのインスタンスがこのコレクション内にある場合に、それをこのコレクションから削除します (任意のオペレーション)。すなわち、(o==null ? e==null : o.equals(e)) である要素 e がコレクション内に 1 つ以上格納されている場合に、これを削除します。指定された要素がコレクション内に格納されていた場合には true を返します。すなわち、この呼び出しの結果、コレクションが変更された場合に true を返します。
パラメータ:
o - コレクションから削除される要素 (その要素がある場合)
戻り値:
この呼び出しの結果、このコレクションが変更された場合は true
例外:
UnsupportedOperationException - このコレクションが remove をサポートしない場合

containsAll

public boolean containsAll(Collection c)
このコレクション内に、指定されたコレクションのすべての要素がある場合に true を返します。
パラメータ:
c - このコレクションにあるかどうかを調べるコレクション
戻り値:
指定されたコレクションのすべての要素がこのコレクション内にある場合は true
関連項目:
contains(Object)

addAll

public boolean addAll(Collection c)
指定されたコレクションのすべての要素をこのコレクションに追加します (任意のオペレーション)。オペレーションの進行中に、指定されたコレクションが変更された場合の、このオペレーションの動作は定義されていません。したがって、指定されたコレクションがこのコレクション自身であり、このコレクションが空ではない場合、この呼び出しの動作は定義されていません。
パラメータ:
c - コレクションに挿入される要素
戻り値:
この呼び出しの結果、このコレクションが変更された場合は true
例外:
UnsupportedOperationException - このコレクションが addAll メソッドをサポートしない場合
ClassCastException - 指定されたコレクションの要素のクラスが原因で、このコレクションに追加できなかった場合
IllegalArgumentException - 指定されたコレクションの要素の特性が原因で、このコレクションに追加できなかった場合
関連項目:
add(Object)

removeAll

public boolean removeAll(Collection c)
指定されたコレクションにも格納されているこのコレクションのすべての要素を削除します (任意のオペレーション)。この呼び出しの結果、このコレクションには指定されたコレクションと共通の要素はなくなります。
パラメータ:
c - コレクションから削除される要素
戻り値:
この呼び出しの結果、このコレクションが変更された場合は true
例外:
UnsupportedOperationException - このコレクションが removeAll メソッドをサポートしない場合
関連項目:
remove(Object), contains(Object)

retainAll

public boolean retainAll(Collection c)
このコレクションにおいて、指定されたコレクションに格納されている要素だけを保持します (任意のオペレーション)。つまり、指定されたコレクションに格納されていないすべての要素をこのコレクションから削除します。
パラメータ:
c - コレクションで保持される要素
戻り値:
この呼び出しの結果、このコレクションが変更された場合は true
例外:
UnsupportedOperationException - コレクションが retainAll メソッドをサポートしていない場合
関連項目:
remove(Object), contains(Object)

clear

public void clear()
コレクションからすべての要素を削除します (任意のオペレーション)。この呼び出しの結果、例外をスローしない限り、コレクションは空になります。
例外:
UnsupportedOperationException - このコレクションが clear メソッドをサポートしない場合

equals

public boolean equals(Object o)
指定されたオブジェクトとこのコレクションが等しいかどうかを比較します。

Collection インタフェースは Object.equals の汎用規約に条項を追加しませんが、Collection を「直接」に実装する (つまり、Collection であり、Set または List ではないクラスを作成する) ときには、Object.equals をオーバーライドする場合に配慮が必要です。Object.equals をオーバーライドする必要がない場合、もっとも単純な方法は Object の実装に依存することですが、実装によっては、デフォルトの「参照比較」の代わりに「値比較」を実装する必要があることがあります。List および Set では、このような値比較が必要です。

Object.equals メソッドの一般規約によると、equals は対称的でなければなりません (つまり、b.equals(a) の場合にだけ a.equals(b))。List.equals および Set.equals の規約によると、リストはほかのリストとだけ等しくなり、セットはほかのセットとだけ等しくなります。このため、ListSet のどちらのインタフェースも実装しないコレクションクラスのカスタム equals メソッドは、このコレクションがリストまたはセットと比較された場合に false を返します。同じ論理により、SetList の両インタフェースを正しく実装するクラスを記述することはできません。

オーバーライド:
クラス Object 内の equals
パラメータ:
o - このコレクションと等しいかどうかが比較される Object
戻り値:
指定されたオブジェクトがこのコレクションに等しい場合は true
関連項目:
Object.equals(Object), Set.equals(Object), List.equals(Object)

hashCode

public int hashCode()
コレクションのハッシュコード値を返します。Collection インタフェースは Object.hashCode メソッドの一般規約に条項を追加しませんが、プログラミングにおいて、Object.equals メソッドをオーバーライドするクラスは、Object.hashCode メソッドの一般規約を満たすために Object.hashCode メソッドもオーバーライドしなければならないことに注意してください。特に、c1.equals(c2)c1.hashCode()==c2.hashCode() を意味します。
オーバーライド:
クラス Object 内の hashCode
戻り値:
このコレクションのハッシュコード値
関連項目:
Object.hashCode(), Object.equals(Object)

JavaTM 2 Platform
Std. Ed. v1.3

バグや機能要求の報告
さらに詳しい API リファレンスおよび開発者ドキュメントについては、 Java 2 SDK SE Developer Documentation を参照してください。このドキュメントには、概念、用語の定義、回避策、 実用的なコード例など、開発者を対象にした詳細な解説が掲載されています。

Java、Java 2D、JDBC は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.