|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
java.lang.Objectjava.util.Collections
public class Collections
このクラスは、コレクションに作用する、またはコレクションを返す static メソッドだけで構成されます。このクラスには、指定されたコレクションに連動した新しいコレクションを返す「ラッパー」など、コレクションに対して作用するさまざまなアルゴリズムがあります。
このクラスのメソッドに提供されるコレクションまたはクラスオブジェクトが null の場合、このクラスのメソッドは NullPointerException をすべてスローします。
このクラスにあるさまざまなアルゴリズムのドキュメントには、通常、「実装」の簡単な説明が含まれています。この説明は、「仕様」の一部ではなく「実装情報」と考えてください。実装者は、仕様に反しないかぎり、ほかのアルゴリズムを自由に使用できます。たとえば、sort が使用するアルゴリズムはマージソートである必要はありませんが、「固定 (stable)」のアルゴリズムでなければいけません。
コレクションが set メソッドのような適切な変異プリミティブ型メソッドをサポートしていない場合、このクラス (処理されるコレクションを修正するアルゴリズム) に含まれていた「破壊的」アルゴリズムは、UnsupportedOperationException をスローするように指定されています。呼び出しがコレクションに影響しない場合、こうしたアルゴリズムは例外をスローする場合がありますが、必須ではありません。たとえば、ソート済みの変更不可能なリストで、sort メソッドを呼び出すと、UnsupportedOperationException がスローされる場合とスローされない場合があります。
このクラスは、Java Collections Framework のメンバーです。
Collection,
Set,
List,
Map| フィールドの概要 | |
|---|---|
static List |
EMPTY_LIST
空のリストです (不変)。 |
static Map |
EMPTY_MAP
空のマップです (不変)。 |
static Set |
EMPTY_SET
空のセットです (不変)。 |
| メソッドの概要 | ||
|---|---|---|
static
|
addAll(Collection<? super T> c,
T... elements)
指定されたすべての要素を指定されたコレクションに追加します。 |
|
static
|
asLifoQueue(Deque<T> deque)
Deque のビューを後入れ先出し (Lifo) Queue として返します。 |
|
static
|
binarySearch(List<? extends Comparable<? super T>> list,
T key)
バイナリサーチアルゴリズムを使用して、指定されたリストから指定されたオブジェクトを検索します。 |
|
static
|
binarySearch(List<? extends T> list,
T key,
Comparator<? super T> c)
バイナリサーチアルゴリズムを使用して、指定されたリストから指定されたオブジェクトを検索します。 |
|
static
|
checkedCollection(Collection<E> c,
Class<E> type)
指定されたコレクションの、動的に型保証されたビューを返します。 |
|
static
|
checkedList(List<E> list,
Class<E> type)
指定されたリストの動的に型保証されたビューを返します。 |
|
static
|
checkedMap(Map<K,V> m,
Class<K> keyType,
Class<V> valueType)
指定されたマップの動的に型保証されたビューを返します。 |
|
static
|
checkedSet(Set<E> s,
Class<E> type)
指定されたセットの動的に型保証されたビューを返します。 |
|
static
|
checkedSortedMap(SortedMap<K,V> m,
Class<K> keyType,
Class<V> valueType)
指定されたソートマップの動的に型保証されたビューを返します。 |
|
static
|
checkedSortedSet(SortedSet<E> s,
Class<E> type)
指定されたソートセットの動的に型保証されたビューを返します。 |
|
static
|
copy(List<? super T> dest,
List<? extends T> src)
あるリストから別のリストにすべての要素をコピーします。 |
|
static boolean |
disjoint(Collection<?> c1,
Collection<?> c2)
指定された 2 つのコレクションに共通の要素が存在しない場合、true を返します。 |
|
static
|
emptyList()
空のリストを返します (不変)。 |
|
static
|
emptyMap()
空のマップを返します (不変)。 |
|
static
|
emptySet()
空のセット (不変) を返します。 |
|
static
|
enumeration(Collection<T> c)
指定されたコレクションの列挙を返します。 |
|
static
|
fill(List<? super T> list,
T obj)
指定されたリストのすべての要素を指定された要素で置き換えます。 |
|
static int |
frequency(Collection<?> c,
Object o)
指定されたコレクション内で、指定されたオブジェクトと等価な要素の数を返します。 |
|
static int |
indexOfSubList(List<?> source,
List<?> target)
指定されたソースリスト内で、指定されたターゲットリストが最初に出現した位置の開始位置を返します。 |
|
static int |
lastIndexOfSubList(List<?> source,
List<?> target)
指定されたソースリスト内で、最後に出現した指定ターゲットリストの開始位置を返します。 |
|
static
|
list(Enumeration<T> e)
指定された列挙により返された要素を含む配列リストを、返された順番で返します。 |
|
static
|
max(Collection<? extends T> coll)
要素の「自然順序付け」に従って、指定されたコレクションの最大の要素を返します。 |
|
static
|
max(Collection<? extends T> coll,
Comparator<? super T> comp)
指定されたコンパレータが示す順序に従って、指定されたコレクションの最大の要素を返します。 |
|
static
|
min(Collection<? extends T> coll)
要素の「自然順序付け」に従って、指定されたコレクションの最小の要素を返します。 |
|
static
|
min(Collection<? extends T> coll,
Comparator<? super T> comp)
指定されたコンパレータが示す順序に従って、指定されたコレクションの最小の要素を返します。 |
|
static
|
nCopies(int n,
T o)
指定されたオブジェクトの n 個のコピーで構成される不変のリストを返します。 |
|
static
|
newSetFromMap(Map<E,Boolean> map)
指定されたマップに連動するセットを返します。 |
|
static
|
replaceAll(List<T> list,
T oldVal,
T newVal)
リスト内に出現する指定された値をすべてほかの値に置き換えます。 |
|
static void |
reverse(List<?> list)
指定されたリストの要素の順序を逆にします。 |
|
static
|
reverseOrder()
Comparable インタフェースを実装するオブジェクトのコレクションで「自然順序付け」の逆を義務付けるコンパレータを返します。 |
|
static
|
reverseOrder(Comparator<T> cmp)
指定されたコンパレータの逆順を義務付けるコンパレータを返します。 |
|
static void |
rotate(List<?> list,
int distance)
指定されたリストの要素を、指定された距離により回転します。 |
|
static void |
shuffle(List<?> list)
デフォルトの乱数発生の元を使用して、指定されたリストの順序を無作為に入れ替えます。 |
|
static void |
shuffle(List<?> list,
Random rnd)
デフォルトの乱数発生の元を使用して、指定されたリストの順序を無作為に入れ替えます。 |
|
static
|
singleton(T o)
指定されたオブジェクトだけを格納している不変のセットを返します。 |
|
static
|
singletonList(T o)
指定されたオブジェクトだけを格納している不変のリストを返します。 |
|
static
|
singletonMap(K key,
V value)
指定された値に指定されたキーだけをマッピングする不変のマップを返します。 |
|
static
|
sort(List<T> list)
要素の「自然順序付け」に従って、指定されたリストを昇順にソートします。 |
|
static
|
sort(List<T> list,
Comparator<? super T> c)
指定されたコンパレータが示す順序に従って、指定されたリストをソートします。 |
|
static void |
swap(List<?> list,
int i,
int j)
指定されたリストの指定された位置にある要素をスワップします。 |
|
static
|
synchronizedCollection(Collection<T> c)
指定されたコレクションに連動する同期 (スレッドセーフな) コレクションを返します。 |
|
static
|
synchronizedList(List<T> list)
指定されたリストに連動する同期 (スレッドセーフな) リストを返します。 |
|
static
|
synchronizedMap(Map<K,V> m)
指定されたマップに連動する同期 (スレッドセーフな) マップを返します。 |
|
static
|
synchronizedSet(Set<T> s)
指定されたセットに連動する同期 (スレッドセーフな) セットを返します。 |
|
static
|
synchronizedSortedMap(SortedMap<K,V> m)
指定されたソートマップに連動する同期 (スレッドセーフな) ソートマップを返します。 |
|
static
|
synchronizedSortedSet(SortedSet<T> s)
指定されたソートセットに連動する同期 (スレッドセーフな) ソートセットを返します。 |
|
static
|
unmodifiableCollection(Collection<? extends T> c)
指定されたコレクションの変更不可能なビューを返します。 |
|
static
|
unmodifiableList(List<? extends T> list)
指定されたリストの変更不可能なビューを返します。 |
|
static
|
unmodifiableMap(Map<? extends K,? extends V> m)
指定されたマップの変更不可能なビューを返します。 |
|
static
|
unmodifiableSet(Set<? extends T> s)
指定されたセットの変更不可能なビューを返します。 |
|
static
|
unmodifiableSortedMap(SortedMap<K,? extends V> m)
指定されたソートマップの変更不可能なビューを返します。 |
|
static
|
unmodifiableSortedSet(SortedSet<T> s)
指定されたソートセットの変更不可能なビューを返します。 |
|
| クラス java.lang.Object から継承されたメソッド |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| フィールドの詳細 |
|---|
public static final Set EMPTY_SET
emptySet()public static final List EMPTY_LIST
emptyList()public static final Map EMPTY_MAP
emptyMap()| メソッドの詳細 |
|---|
public static <T extends Comparable<? super T>> void sort(List<T> list)
このソートは固定であることが保証されています。つまり、ソートを実行しても、同等の要素の順序は変わりません。
指定されたリストは変更可能でなければなりませんが、サイズ変更はできなくてもかまいません。
ソートアルゴリズムは修正マージソートです。このソートでは、下位のサブリストでの最高レベルの要素が上位のサブリストでの最低レベルの要素より小さい場合、マージは省略されます。このアルゴリズムは、常に n log(n) のパフォーマンスを提供します。 この実装は、指定されたリストの配列へのダンプ、配列のソート、リストの繰り返し処理を行うことにより、配列の対応する位置から各要素を再設定します。これは、リンクされたリストを適所にソートしようとした場合の n2 log(n) のパフォーマンスになるのを回避します。
list - ソートされるリスト
ClassCastException - リストに「相互に比較可能」でない要素 (たとえば、文字列と整数) がある場合
UnsupportedOperationException - 指定されたリストのリスト反復子が set オペレーションをサポートしない場合Comparable
public static <T> void sort(List<T> list,
Comparator<? super T> c)
このソートは固定であることが保証されています。つまり、ソートを実行しても、同等の要素の順序は変わりません。
ソートアルゴリズムは修正マージソートです。このソートでは、下位のサブリストでの最高レベルの要素が上位のサブリストでの最低レベルの要素より小さい場合、マージは省略されます。このアルゴリズムは、常に n log(n) のパフォーマンスを提供します。 指定されたリストは変更可能でなければなりませんが、サイズ変更はできなくてもかまいません。この実装は、指定されたリストの配列へのダンプ、配列のソート、リストの繰り返し処理を行うことにより、配列の対応する位置から各要素を再設定します。これは、リンクされたリストを適所にソートしようとした場合の n2 log(n) のパフォーマンスになるのを回避します。
list - ソートされるリストc - リストの順序を決定するコンパレータ。null 値は、要素の「自然順序付け」を使用することを示す
ClassCastException - リストに指定されたコンパレータで「相互に比較」できない要素がある場合
UnsupportedOperationException - 指定されたリストのリスト反復子が set オペレーションをサポートしない場合Comparator
public static <T> int binarySearch(List<? extends Comparable<? super T>> list,
T key)
sort(List) メソッドを使用して要素の自然順序付けに従って昇順にソートする必要があります。リストがソートされていない場合、結果は定義されません。指定されたオブジェクトと等しい要素がリストに複数ある場合、どれが見つかるかは保証されません。
「ランダムアクセス」リストの場合、このメソッドは log(n) 時間で動作します (位置を指定したアクセスにほぼ一定の時間が必要)。指定されたリストが RandomAccess インタフェースを実装せず、大きなリストである場合、このメソッドは O(n) リンクトラバーサルと O(log n) 要素比較を実行する反復子ベースのバイナリサーチを行います。
list - 検索されるリストkey - 検索されるキー
ClassCastException - リストに「相互に比較可能」でない要素 (たとえば、文字列と整数) がある場合、または検索キーがリストの要素と相互に比較可能でない場合
public static <T> int binarySearch(List<? extends T> list,
T key,
Comparator<? super T> c)
sort(List, Comparator) メソッドを使用して、指定されたコンパレータに従って昇順にソートしなければいけません。リストがソートされていない場合、結果は定義されません。指定されたオブジェクトと等しい要素がリストに複数ある場合、どれが見つかるかは保証されません。
「ランダムアクセス」リストの場合、このメソッドは log(n) 時間で動作します (位置を指定したアクセスにほぼ一定の時間が必要)。指定されたリストが RandomAccess インタフェースを実装せず、大きなリストである場合、このメソッドは O(n) リンクトラバーサルと O(log n) 要素比較を実行する反復子ベースのバイナリサーチを行います。
list - 検索されるリストkey - 検索されるキーc - リストが順序付けされるコンパレータ。null 値は、要素の自然順序付けを使用することを示す
ClassCastException - リストに指定されたコンパレータで「相互に比較可能」でない要素がある場合、または検索キーがこのコンパレータを使ってリストの要素と相互に比較できない場合public static void reverse(List<?> list)
このメソッドは一次時間で動作します。
list - 要素の順序が逆にされるリスト
UnsupportedOperationException - 指定されたリストまたはそのリスト反復子が set オペレーションをサポートしない場合public static void shuffle(List<?> list)
上記の説明で「ほぼ」という言葉を使用しているのは、乱数発生の元となるデフォルトのソースが、独立して選択されたビットのソースとして偏りがないのは近似的にのみ成立するからです。ランダムに選択された完全なソースであれば、アルゴリズムが組み合わせを選択する確率は、完全に一様になります。
この実装は、リストの最後の要素から 2 番目の要素まで逆方向にトラバースし、無作為に選択された要素を「現在の位置」に繰り返し入れ替えます。要素は、リストの最初の要素から現在の位置までの範囲で無作為に選択されます。
このメソッドは一次時間で動作します。指定されたリストが RandomAccess インタフェースを実装しない、大きなリストである場合、リストの順序を入れ替える前に、この実装は指定されたリストを配列へダンプして、次に入れ替えた配列をリストにダンプして戻します。適切に「順次アクセス」リストの順序を入れ替えることによって起こる 2 次動作を避けるためです。
list - 順序が入れ替えられるリスト
UnsupportedOperationException - 指定されたリストまたはそのリスト反復子が set オペレーションをサポートしない場合
public static void shuffle(List<?> list,
Random rnd)
この実装は、リストの最後の要素から 2 番目の要素まで逆方向にトラバースし、無作為に選択された要素を「現在の位置」に繰り返し入れ替えます。要素は、リストの最初の要素から現在の位置までの範囲で無作為に選択されます。
このメソッドは一次時間で動作します。指定されたリストが RandomAccess インタフェースを実装しない、大きなリストである場合、リストの順序を入れ替える前に、この実装は指定されたリストを配列へダンプして、次に入れ替えた配列をリストにダンプして戻します。適切に「順次アクセス」リストの順序を入れ替えることによって起こる 2 次動作を避けるためです。
list - 順序が入れ替えられるリストrnd - リストの順序を入れ替えるために使う乱数発生の元
UnsupportedOperationException - 指定されたリストまたはそのリスト反復子が set オペレーションをサポートしない場合
public static void swap(List<?> list,
int i,
int j)
list - 要素をスワップするリストi - スワップされる 1 つの要素のインデックスj - スワップされるもう 1 つの要素のインデックス
IndexOutOfBoundsException - i または j のいずれかが範囲外の場合 (i < 0 || i >= list.size() || j < 0 || j >= list.size())
public static <T> void fill(List<? super T> list,
T obj)
このメソッドは一次時間で動作します。
list - 指定された要素が挿入されるリストobj - 指定されたリストに挿入される要素
UnsupportedOperationException - 指定されたリストまたはそのリスト反復子が set オペレーションをサポートしない場合
public static <T> void copy(List<? super T> dest,
List<? extends T> src)
このメソッドは一次時間で動作します。
dest - コピー先のリストsrc - コピー元のリスト
IndexOutOfBoundsException - コピー先のリストがコピー元のリスト全体を格納するには小さすぎる場合
UnsupportedOperationException - コピーリストのリスト反復子が set オペレーションをサポートしない場合public static <T extends Object & Comparable<? super T>> T min(Collection<? extends T> coll)
このメソッドはコレクション全体で繰り返し処理を行うので、コレクションのサイズに比例した時間が必要です。
coll - 最小の要素を決めるコレクション
ClassCastException - コレクションに「相互に比較可能」でない要素 (たとえば、文字列と整数) がある場合
NoSuchElementException - コレクションが空の場合Comparable
public static <T> T min(Collection<? extends T> coll,
Comparator<? super T> comp)
このメソッドはコレクション全体で繰り返し処理を行うので、コレクションのサイズに比例した時間が必要です。
coll - 最小の要素を決めるコレクションcomp - 最小の要素リストが決定されるコンパレータ。null 値は、要素の「自然順序付け」を使用することを示す
ClassCastException - コレクションに指定されたコンパレータで「相互に比較」できない要素がある場合
NoSuchElementException - コレクションが空の場合Comparablepublic static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll)
このメソッドはコレクション全体で繰り返し処理を行うので、コレクションのサイズに比例した時間が必要です。
coll - 最大の要素を決めるコレクション
ClassCastException - コレクションに「相互に比較可能」でない要素 (たとえば、文字列と整数) がある場合
NoSuchElementException - コレクションが空の場合Comparable
public static <T> T max(Collection<? extends T> coll,
Comparator<? super T> comp)
このメソッドはコレクション全体で繰り返し処理を行うので、コレクションのサイズに比例した時間が必要です。
coll - 最大の要素を決めるコレクションcomp - 最大の要素リストを決定するコンパレータ。null 値は、要素の「自然順序付け」を使用することを示す
ClassCastException - コレクションに指定されたコンパレータで「相互に比較」できない要素がある場合
NoSuchElementException - コレクションが空の場合Comparable
public static void rotate(List<?> list,
int distance)
たとえば、list には [t, a, n, k, s] が含まれるとします。Collections.rotate(list, 1) (あるいは Collections.rotate(list, -4)) を呼び出したあと、list には [s, t, a, n, k] が含まれます。
このメソッドをサブリストに有効に適用して、残りの要素の順序を保存しながら、リスト内の 1 つまたは複数の要素を移動することができます。たとえば、次の慣用法は、インデックス j にある要素を位置 k に移動します (k は j はより大きいか、等値である必要があります)。
Collections.rotate(list.subList(j, k+1), -1);
これを固定するために、list に [a, b, c, d, e] が含まれると仮定します。インデックス 1 (b) にある要素を 2 つの位置に進めるためには、次の呼び出しを実行します。
Collections.rotate(l.subList(1, 4), -1);
その結果として得られるリストは [a, c, d, b, e] になります。
複数の要素を進めるためには、回転距離の絶対値を増加させます。後ろに移動させるには、正のシフト移動量を使用します。
指定された値が小さいリストであるか、RandomAccess インタフェースを実装している場合、この実装は第 1 の要素を移動すべき位置に交換します。 次に、置き換えられた要素が最初の要素にスワップされるまで、置き換えられた要素を移動すべき位置に繰り返し交換します。必要に応じて、回転が完了するまで、第 2 要素および連続する要素についてこのプロセスが繰り返されます。指定されたリストが大きく、RandomAccess インタフェースを実装していない場合、この実装は、インデックス -distance mod size の 2 つのサブリストビューにリストを分割します。次に、reverse(List) メソッドは、それぞれのサブリストビューで呼び出され、最終的にはリスト全体で呼び出されます。2 つのアルゴリズムの詳細については、Jon Bentley の『Programming Pearls』(Addison-Wesley, 1986) のセクション 2.3 を参照してください。
list - 回転されるリストdistance - リストを回転する距離。この値に制約はなく、値は 0 でも、負でも、list.size() より大きくてもかまわない
UnsupportedOperationException - 指定されたリストまたはそのリスト反復子が set オペレーションをサポートしない場合
public static <T> boolean replaceAll(List<T> list,
T oldVal,
T newVal)
list - 置換が生じるリストoldVal - 置換前の値newVal - oldVal の置換後の値
UnsupportedOperationException - 指定されたリストまたはそのリスト反復子が set オペレーションをサポートしない場合
public static int indexOfSubList(List<?> source,
List<?> target)
この実装は、ソースリストをスキャニングする「強引な」技術を使用して、ソースリストの各位置でターゲットと一致するか順番に検索します。
source - 最初に出現する target を検索するリストtarget - source のsubList として検索するリスト
public static int lastIndexOfSubList(List<?> source,
List<?> target)
この実装では、ソースリストの繰り返し処理を行う「強引な」技術を使用して、各位置でターゲットと一致するか順番に検索します。
source - 最後に出現する target を検索するリストtarget - source のsubList として検索するリスト
public static <T> Collection<T> unmodifiableCollection(Collection<? extends T> c)
返されたコレクションは、hashCode オペレーションおよび equals オペレーションを基となるコレクションに渡すことはなく、Object の equals メソッドおよび hashCode メソッドに依存します。これは、基となるコレクションがセットまたはリストの場合にそれらのオペレーションの規約を守るために必要です。
返されたコレクションは、指定されたコレクションが直列化可能の場合は直列化可能です。
c - 変更不可能なビューが返されるコレクション
public static <T> Set<T> unmodifiableSet(Set<? extends T> s)
返されるセットは、指定されたセットが直列化可能の場合に直列化可能になります。
s - 変更不可能なビューが返されるセット
public static <T> SortedSet<T> unmodifiableSortedSet(SortedSet<T> s)
返されたソートセットは、指定されたソートセットが直列化可能の場合は直列化可能です。
s - 変更不可能なビューが返されるソートセット
public static <T> List<T> unmodifiableList(List<? extends T> list)
返されたリストは、指定されたリストが直列化可能の場合にだけ直列化可能になります。また、指定されたリストが RandomAccess を実装する場合にだけ、返されたリストは RandomAccess を実装します。
list - 変更不可能なビューが返されるリスト
public static <K,V> Map<K,V> unmodifiableMap(Map<? extends K,? extends V> m)
返されたマップは、指定されたマップが直列化可能の場合は直列化可能です。
m - 変更不可能なビューが返されるマップ
public static <K,V> SortedMap<K,V> unmodifiableSortedMap(SortedMap<K,? extends V> m)
返されたソートマップは、指定されたソートマップが直列化可能の場合は直列化可能です。
m - 変更不可能なビューが返されるソートマップ
public static <T> Collection<T> synchronizedCollection(Collection<T> c)
返されたコレクションの繰り返し処理を行う場合、ユーザは、次に示すように手動で同期をとる必要があります。
Collection c = Collections.synchronizedCollection(myCollection);
...
synchronized(c) {
Iterator i = c.iterator(); // Must be in the synchronized block
while (i.hasNext())
foo(i.next());
}
これを行わない場合、動作は保証されません。
返されたコレクションは、hashCode オペレーションおよび equals オペレーションを基となるコレクションに渡すことはなく、Object の equals および hashCode メソッドに依存します。これは、基となるコレクションがセットまたはリストの場合にそれらのオペレーションの規約を守るために必要です。
返されたコレクションは、指定されたコレクションが直列化可能の場合は直列化可能です。
c - 同期コレクションに「ラップ」されるコレクション
public static <T> Set<T> synchronizedSet(Set<T> s)
返されたセットの繰り返し処理を行う場合、ユーザは、次に示すように手動で同期をとる必要があります。
Set s = Collections.synchronizedSet(new HashSet());
...
synchronized(s) {
Iterator i = s.iterator(); // Must be in the synchronized block
while (i.hasNext())
foo(i.next());
}
これを行わない場合、動作は保証されません。
返されるセットは、指定されたセットが直列化可能の場合に直列化可能になります。
s - 同期セットに「ラップ」されるセット
public static <T> SortedSet<T> synchronizedSortedSet(SortedSet<T> s)
返されたソートセット、またはその subSet、headSet、あるいは tailSet ビューの繰り返し処理を行う場合、ユーザは、次に示すように手動で同期をとる必要があります。
SortedSet s = Collections.synchronizedSortedSet(new TreeSet());
...
synchronized(s) {
Iterator i = s.iterator(); // Must be in the synchronized block
while (i.hasNext())
foo(i.next());
}
または
SortedSet s = Collections.synchronizedSortedSet(new TreeSet());
SortedSet s2 = s.headSet(foo);
...
synchronized(s) { // Note: s, not s2!!!
Iterator i = s2.iterator(); // Must be in the synchronized block
while (i.hasNext())
foo(i.next());
}
これを行わない場合、動作は保証されません。
返されたソートセットは、指定されたソートセットが直列化可能の場合は直列化可能です。
s - 同期ソートセットに「ラップ」されるソートセット
public static <T> List<T> synchronizedList(List<T> list)
返されたリストの繰り返し処理を行う場合、ユーザは、次に示すように手動で同期をとる必要があります。
List list = Collections.synchronizedList(new ArrayList());
...
synchronized(list) {
Iterator i = list.iterator(); // Must be in synchronized block
while (i.hasNext())
foo(i.next());
}
これを行わない場合、動作は保証されません。
返されたリストは、指定されたリストが直列化可能の場合にだけ直列化可能になります。
list - 同期リストに「ラップ」されるリスト
public static <K,V> Map<K,V> synchronizedMap(Map<K,V> m)
返されたマップのコレクションビューでの繰り返し処理を行う場合、ユーザは、次に示すように手動で同期をとる必要があります。
Map m = Collections.synchronizedMap(new HashMap());
...
Set s = m.keySet(); // Needn't be in synchronized block
...
synchronized(m) { // Synchronizing on m, not s!
Iterator i = s.iterator(); // Must be in synchronized block
while (i.hasNext())
foo(i.next());
}
これを行わない場合、動作は保証されません。
返されたマップは、指定されたマップが直列化可能の場合は直列化可能です。
m - 同期マップに「ラップ」されるマップ
public static <K,V> SortedMap<K,V> synchronizedSortedMap(SortedMap<K,V> m)
返されたソートマップのコレクションビュー、または subMap、headMap、tailMap ビューのコレクションビューでの繰り返し処理を行う場合、ユーザは、次に示すように手動で同期をとる必要があります。
SortedMap m = Collections.synchronizedSortedMap(new TreeMap());
...
Set s = m.keySet(); // Needn't be in synchronized block
...
synchronized(m) { // Synchronizing on m, not s!
Iterator i = s.iterator(); // Must be in synchronized block
while (i.hasNext())
foo(i.next());
}
または
SortedMap m = Collections.synchronizedSortedMap(new TreeMap());
SortedMap m2 = m.subMap(foo, bar);
...
Set s2 = m2.keySet(); // Needn't be in synchronized block
...
synchronized(m) { // Synchronizing on m, not m2 or s2!
Iterator i = s.iterator(); // Must be in synchronized block
while (i.hasNext())
foo(i.next());
}
これを行わない場合、動作は保証されません。
返されたソートマップは、指定されたソートマップが直列化可能の場合は直列化可能です。
m - 同期ソートマップに「ラップ」されるソートマップ
public static <E> Collection<E> checkedCollection(Collection<E> c,
Class<E> type)
言語内の総称メカニズムによりコンパイル時 (静的) の型チェックが提供されますが、チェックされないキャストを使用してこのメカニズムを無効にすることはできません。通常、この種のチェックされない操作すべてでコンパイラが警告を発行するため、これは問題にはなりません。ただし、時として、静的な型チェックだけでは不十分な場合があります。たとえば、コレクションがサードパーティーのライブラリに渡されるが、ライブラリコードが不正な型の要素を挿入してコレクションを破壊してしまうことがあってはならない場合などです。
動的に型保証されたビューの別の用途は、デバッグです。プログラムが ClassCastException で失敗し、不正な型の要素がパラメータ化されたコレクションに入れられたことを示す場合を考えましょう。残念なことに、不正な要素が挿入されるとこの例外が常に発生する可能性があるため、この例外から問題のソースに関する情報をほとんどまたはまったく得ることができません。問題が再現可能な場合は、プログラムを変更して動的な型保証されたビューでコレクションを一時的にラップすることで、ソースをすばやく判定できます。たとえば、宣言
Collection<String> c = new HashSet<String>();
は、次の宣言で一時的に置き換えることができます。
Collection<String> c = Collections.checkedCollection(
new HashSet<String>(), String.class);
プログラムを再度実行すると、不正な型の要素がコレクションに挿入された位置でプログラムが失敗するため、問題の原因をはっきりと識別できます。問題を修正したら、変更した宣言を元に戻します。
返されたコレクションは、hashCode オペレーションおよび equals オペレーションを基となるコレクションに渡すことはなく、Object の equals メソッドおよび hashCode メソッドに依存します。これは、基となるコレクションがセットまたはリストの場合にそれらのオペレーションの規約を守るために必要です。
返されたコレクションは、指定されたコレクションが直列化可能の場合は直列化可能です。
c - 動的に型保証されたビューが返されるコレクションtype - c が保持することを許された要素の型
public static <E> Set<E> checkedSet(Set<E> s,
Class<E> type)
動的に型保証されたビューの使用については、checkedCollection メソッドのドキュメントを参照してください。
返されるセットは、指定されたセットが直列化可能の場合に直列化可能になります。
s - 動的に型保証されたビューが返されるセットtype - s が保持することを許された要素の型
public static <E> SortedSet<E> checkedSortedSet(SortedSet<E> s,
Class<E> type)
動的に型保証されたビューの使用については、checkedCollection メソッドのドキュメントを参照してください。
返されたソートセットは、指定されたソートセットが直列化可能の場合は直列化可能です。
s - 動的に型保証されたビューが返されるソートセットtype - s が保持することを許された要素の型
public static <E> List<E> checkedList(List<E> list,
Class<E> type)
動的に型保証されたビューの使用については、checkedCollection メソッドのドキュメントを参照してください。
返されたリストは、指定されたリストが直列化可能の場合にだけ直列化可能になります。
list - 動的に型保証されたビューが返されるリストtype - list が保持することを許された要素の型
public static <K,V> Map<K,V> checkedMap(Map<K,V> m,
Class<K> keyType,
Class<V> valueType)
エントリセットビューから取得された Map.Entry インスタンスを介して試みられるかにかかわらず、すぐに ClassCastException がスローされます。
動的に型保証されたビューが生成される前に、不正な型のキーまたは値がマップに含まれず、マップへの後続のアクセスがすべてビュー (またはコレクションビューの 1 つ) を介して行われる場合、マップに不正な型のキーや値が含まれないことが保証されます。
動的に型保証されたビューの使用については、checkedCollection メソッドのドキュメントを参照してください。
返されたマップは、指定されたマップが直列化可能の場合は直列化可能です。
m - 動的に型保証されたビューが返されるマップkeyType - m が保持することを許されたキーの型valueType - m が保持することを許された値の型
public static <K,V> SortedMap<K,V> checkedSortedMap(SortedMap<K,V> m,
Class<K> keyType,
Class<V> valueType)
エントリセットビューから取得された Map.Entry インスタンスを介して試みられるかにかかわらず、すぐに ClassCastException がスローされます。
動的に型保証されたビューが生成される前に、不正な型のキーまたは値がマップに含まれず、マップへの後続のアクセスがすべてビュー (またはコレクションビューの 1 つ) を介して行われる場合、マップに不正な型のキーや値が含まれないことが保証されます。
動的に型保証されたビューの使用については、checkedCollection メソッドのドキュメントを参照してください。
返されたマップは、指定されたマップが直列化可能の場合は直列化可能です。
m - 動的に型保証されたビューが返されるマップkeyType - m が保持することを許されたキーの型valueType - m が保持することを許された値の型
public static final <T> Set<T> emptySet()
次に、空のセットを取得するための型保証された方法の例を示します。
Set<String> s = Collections.emptySet();
実装にあたっての注意:このメソッドの実装では、呼び出しごとに個別の Set オブジェクトを作成する必要はありません。このメソッドは同様の名前が付けられたフィールドを使用した比較可能なコストがあるようなものです(このメソッドとは異なり、フィールドは型保証しない)。
EMPTY_SETpublic static final <T> List<T> emptyList()
次に、空のリストを取得するための型保証された方法の例を示します。
List<String> s = Collections.emptyList();
実装にあたっての注意:このメソッドの実装では、各呼び出しごとに個別の List オブジェクトを作成する必要はありません。このメソッドは同様の名前が付けられたフィールドを使用した比較可能なコストがあるようなものです(このメソッドとは異なり、フィールドは型保証しない)。
EMPTY_LISTpublic static final <K,V> Map<K,V> emptyMap()
次に、空のセットを取得するための型保証された方法の例を示します。
Map<String, Date> s = Collections.emptyMap();
実装にあたっての注意:このメソッドの実装では、各呼び出しごとに個別の Map オブジェクトを作成する必要はありません。このメソッドは同様の名前が付けられたフィールドを使用した比較可能なコストがあるようなものです(このメソッドとは異なり、フィールドは型保証しない)。
EMPTY_MAPpublic static <T> Set<T> singleton(T o)
o - 返されるセットに格納される唯一のオブジェクト
public static <T> List<T> singletonList(T o)
o - 返されるリストに格納される唯一のオブジェクト
public static <K,V> Map<K,V> singletonMap(K key,
V value)
key - 返されるマップに格納される唯一のキーvalue - 返されるマップによって key がマッピングされる値
public static <T> List<T> nCopies(int n,
T o)
n - 返されるリストの要素数o - 返されるリストに繰り返し現れる要素
IllegalArgumentException - n < 0 の場合List.addAll(Collection),
List.addAll(int, Collection)public static <T> Comparator<T> reverseOrder()
Arrays.sort(a, Collections.reverseOrder());
逆引きの辞書編集順 (アルファベット順) で配列をソートします。返されるコンパレータは直列化可能です。
Comparablepublic static <T> Comparator<T> reverseOrder(Comparator<T> cmp)
reverseOrder() と等価になります (つまり、Comparable インタフェースを実装するオブジェクトのコレクションに逆の「自然順序」を義務付けるコンパレータを返す)。
返されるコンパレータは直列化可能です (指定されたコンパレータも直列化可能であるか null の場合)。
public static <T> Enumeration<T> enumeration(Collection<T> c)
c - 列挙が返されるコレクション
Enumerationpublic static <T> ArrayList<T> list(Enumeration<T> e)
e - 返される配列リストの要素を提供する列挙
Enumeration,
ArrayList
public static int frequency(Collection<?> c,
Object o)
c - o の頻度を判定するコレクションo - 頻度を判定するオブジェクト
NullPointerException - c が null の場合
public static boolean disjoint(Collection<?> c1,
Collection<?> c2)
Collection の汎用規約に準拠しないコレクションに対してこのメソッドを使用する場合は、注意が必要です。実装が、一方のコレクションに対して処理を繰り返し実行し、他方のコレクション内に含まれるかどうかをテストする (または等価な計算を実行する) 場合があります。一方のコレクションが非標準の等価テストを使用する場合 (順序が等価との互換性を持たない SortedSet や、IdentityHashMap のキーセットのように) 、両方のコレクションで同じ非標準の等価テストを使用する必要があります。 そうでない場合のこのメソッドの結果は定義されていません。
両方のパラメータ内で同じコレクションを渡すことは許容されています。 この場合、コレクションが空の場合にのみ、メソッドは true を返します。
c1 - コレクションc2 - コレクション
NullPointerException - どちらかのコレクションが null の場合
public static <T> boolean addAll(Collection<? super T> c,
T... elements)
要素を個別に指定する場合、このメソッドでは、次の例のように、数種類の要素を既存のコレクションに簡単に追加できます。
Collections.addAll(flavors, "Peaches 'n Plutonium", "Rocky Racoon");
c - elements が挿入されるコレクションelements - c に挿入される要素
UnsupportedOperationException - c が add オペレーションをサポートしない場合
NullPointerException - elements に 1 つ以上の null 要素が含まれており、c が null 要素を許可しない場合、あるいは c または elements が null の場合
IllegalArgumentException - elements の値のあるプロパティーが原因で、c に追加できない場合Collection.addAll(Collection)public static <E> Set<E> newSetFromMap(Map<E,Boolean> map)
Map 実装に対応する Set 実装を提供します。HashMap や TreeMap など対応する Set 実装がすでにある Map 実装では、このメソッドを使用する必要はありません。
このメソッドによって返されるセットでのそれぞれのメソッド呼び出しによって、1 つの例外を除き、基になるマップかその keySet ビューでメソッド呼び出しが 1 つだけ発生します。addAll メソッドは、基になるマップの一連の put 呼び出しとして実装されます。
指定されたマップは、このメソッドが呼び出された時点では空でなければならず、このメソッドの終了後は直接アクセスすることはできません。これらの条件は、次のコードの抜粋に示すように、マップが空の状態で作成され、このメソッドに直接渡され、マップへの参照が保持されない場合に保証されます。
Set<Object> weakHashSet = Collections.newSetFromMap(
new WeakHashMap<Object, Boolean>());
map - 基になるマップ
IllegalArgumentException - map が空でない場合public static <T> Queue<T> asLifoQueue(Deque<T> deque)
Deque のビューを後入れ先出し (Lifo) Queue として返します。add メソッドは push にマップされ、remove メソッドは pop にマップされ、以下同様にマップされます。このビューは、Queue が必要なメソッドを使用したいが Lifo 順序付けが必要な場合に有効なことがあります。
このメソッドによって返されるキューでのそれぞれのメソッド呼び出しによって、1 つの例外を除き、基になる両端キューでメソッド呼び出しが 1 つだけ発生します。addAll メソッドは、基になる両端キューの一連の addFirst 呼び出しとして実行されます。
deque - 両端キュー
|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。