|
Java プラットフォーム 1.2 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
java.lang.Object | +--java.util.Collections
このクラスは、コレクションに作用するか、コレクションを返す static メソッドだけで構成されます。このクラスには、指定されたコレクションを基にした新しいコレクションを返す「ラッパー」など、コレクションに対して作用するさまざまなアルゴリズムがあります。
このクラスにあるさまざまなアルゴリズムのドキュメントには、通常、「実装」の簡単な説明が含まれています。この説明は、「仕様」の一部ではなく「実装情報」と考えてください。実装者は、仕様に反しない限り、ほかのアルゴリズムを自由に使用できます。たとえば、sort が使用するアルゴリズムはマージソートである必要はありませんが、「固定 (stable)」のアルゴリズムでなければなりません。
Collection,
Set,
List,
Map| フィールドの概要 | |
static List |
EMPTY_LIST
空のリストです (不変)。 |
static Set |
EMPTY_SET
空のセットです (不変)。 |
| メソッドの概要 | |
static int |
binarySearch(List list,
Object key)
バイナリサーチアルゴリズムを使って、指定されたリストから指定されたオブジェクトを検索します。 |
static int |
binarySearch(List list,
Object key,
Comparator c)
バイナリサーチアルゴリズムを使って、指定されたリストから指定されたオブジェクトを検索します。 |
static void |
copy(List dest,
List src)
あるリストから別のリストにすべての要素をコピーします。 |
static Enumeration |
enumeration(Collection c)
指定されたコレクションの列挙を返します。 |
static void |
fill(List list,
Object o)
指定されたリストのすべての要素を指定された要素で置き換えます。 |
static Object |
max(Collection coll)
要素の「自然順序付け」に従って、指定されたコレクションの最大の要素を返します。 |
static Object |
max(Collection coll,
Comparator comp)
指定されたコンパレータが示す順序に従って、指定されたコレクションの最大の要素を返します。 |
static Object |
min(Collection coll)
要素の「自然順序付け」に従って、指定されたコレクションの最小の要素を返します。 |
static Object |
min(Collection coll,
Comparator comp)
指定されたコンパレータが示す順序に従って、指定されたコレクションの最小の要素を返します。 |
static List |
nCopies(int n,
Object o)
指定されたオブジェクトの n 個のコピーで構成される不変のリストを返します。 |
static void |
reverse(List l)
指定されたリストの要素の順序を逆にします。 |
static Comparator |
reverseOrder()
Comparable インタフェースを実装するオブジェクトのコレクションで「自然順序付け」の逆を義務付けるコンパレータを返します。 |
static void |
shuffle(List list)
デフォルトの乱数発生の元を使って、指定されたリストの順序を無作為に入れ替えます。 |
static void |
shuffle(List list,
Random rnd)
デフォルトの乱数発生の元を使って、指定されたリストの順序を無作為に入れ替えます。 |
static Set |
singleton(Object o)
指定されたオブジェクトだけを格納している不変のセットを返します。 |
static void |
sort(List list)
要素の「自然順序付け」に従って、指定されたリストを昇順にソートします。 |
static void |
sort(List list,
Comparator c)
指定されたコンパレータが示す順序に従って、指定されたリストをソートします。 |
static Collection |
synchronizedCollection(Collection c)
指定されたコレクションを基にする同期 (スレッドに対して安全な) コレクションを返します。 |
static List |
synchronizedList(List list)
指定されたリストを基にする同期 (スレッドに対して安全な) リストを返します。 |
static Map |
synchronizedMap(Map m)
指定されたマップを基にする同期 (スレッドに対して安全な) マップを返します。 |
static Set |
synchronizedSet(Set s)
指定されたセットを基にする同期 (スレッドに対して安全な) セットを返します。 |
static SortedMap |
synchronizedSortedMap(SortedMap m)
指定されたソートマップを基にする同期 (スレッドに対して安全な) ソートマップを返します。 |
static SortedSet |
synchronizedSortedSet(SortedSet s)
指定されたソートセットを基にする同期 (スレッドに対して安全な) ソートセットを返します。 |
static Collection |
unmodifiableCollection(Collection c)
指定されたコレクションの変更不可能なビューを返します。 |
static List |
unmodifiableList(List list)
指定されたリストの変更不可能なビューを返します。 |
static Map |
unmodifiableMap(Map m)
指定されたマップの変更不可能なビューを返します。 |
static Set |
unmodifiableSet(Set s)
指定されたセットの変更不可能なビューを返します。 |
static SortedMap |
unmodifiableSortedMap(SortedMap m)
指定されたソートマップの変更不可能なビューを返します。 |
static SortedSet |
unmodifiableSortedSet(SortedSet s)
指定されたソートセットの変更不可能なビューを返します。 |
| クラス java.lang.Object から継承したメソッド |
clone,
equals,
finalize,
getClass,
hashCode,
notify,
notifyAll,
toString,
wait,
wait,
wait |
| フィールドの詳細 |
public static final Set EMPTY_SET
public static final List EMPTY_LIST
| メソッドの詳細 |
public static void sort(List list)
このソートは固定であることが保証されています。つまり、ソートを実行しても、同等の要素の順序は変わりません。
指定されたリストは変更可能でなければなりませんが、サイズ変更はできなくてもかまいません。
ソートアルゴリズムは修正マージソートです。このソートでは、低レベルのサブリストにおける最高レベルの要素が高レベルのサブリストにおける最低レベルの要素より小さい場合、マージは省略されます。このアルゴリズムは、常に n log(n) のパフォーマンスを提供し、ほぼソートされたリストではパフォーマンスは線型に近づく場合もあります。
この実装は、指定されたリストの配列へのダンプ、配列のソート、リストでの繰り返し処理を行うことにより、配列の対応する位置から各要素を再設定します。これは、リンクリストをインプレースでソートしようとした場合の n2 log(n) のパフォーマンスになるのを回避します。
list - ソートされるリストComparable
public static void sort(List list,
Comparator c)
このソートは固定であることが保証されています。つまり、ソートを実行しても、同等の要素の順序は変わりません。
ソートアルゴリズムは修正マージソートです。このソートでは、低レベルのサブリストにおける最高レベルの要素が高レベルのサブリストにおける最低レベルの要素より小さい場合、マージは省略されます。このアルゴリズムは、常に n log(n) のパフォーマンスを提供し、ほとんどソートされたリストではパフォーマンスは線型に近づく場合もあります。
指定されたリストは変更可能でなければなりませんが、サイズ変更はできなくてもかまいません。この実装は、指定されたリストの配列へのダンプ、配列のソート、リストの繰り返し処理を行うことにより、配列の対応する位置から各要素を再設定します。これは、リンクリストをインプレースでソートしようとした場合の n2 log(n) のパフォーマンスになるのを回避します。
list - ソートされるリストc - 配列の順序を決めるコンパレータComparator
public static int binarySearch(List list,
Object key)
「ランダムアクセス」リストの場合、このメソッドは log(n) 時間で動作します (位置を指定したアクセスにほぼ一定の時間が必要)。「順次アクセス」リストで呼び出された場合、このメソッドは n log(n) 時間で動作する場合があります (位置を指定したアクセスに線形時間が必要)。
指定されたリストが AbstracSequentialList インタフェースを実装する場合、このメソッドはバイナリサーチではなくシーケンシャルサーチを行います。このため、このメソッドが LinkedList オブジェクトで呼び出された場合に n log(n) のパフォーマンスではなく線型のパフォーマンスが提供されます。list - 検索対象のリストkey - 検索されるキーComparable,
sort(List)
public static int binarySearch(List list,
Object key,
Comparator c)
「ランダムアクセス」リストの場合、このメソッドは log(n) 時間で動作します (位置を指定したアクセスにほぼ一定の時間が必要)。「順次アクセス」リストで呼び出された場合、このメソッドは n log(n) 時間で動作する場合があります (位置を指定したアクセスに線形時間が必要)。
指定されたリストが AbstracSequentialList インタフェースを実装する場合、このメソッドはバイナリサーチではなくシーケンシャルサーチを行います。このため、このメソッドが LinkedList オブジェクトで呼び出された場合に n log(n) のパフォーマンスではなく線型のパフォーマンスを提供します。list - 検索対象のリストkey - 検索されるキーc - リストを順序付けするコンパレータComparable,
sort(List, Comparator)public static void reverse(List l)
このメソッドは線形時間で動作します。
l - 要素の順序が逆にされるリストpublic static void shuffle(List list)
上記の説明で「ほぼ」という言葉を使用しているのは、乱数発生の元となるデフォルトのソースが、独立して選択されたビットのソースとして偏りがないのは近似的にのみ成立するからです。ランダムに選択された完全なソースであれば、アルゴリズムが組み合わせを選択する確率は、完全に一様になります。
この実装は、リストを最後の要素から 2 番目の要素まで逆方向にたどり、無作為に選択された要素を「現在の位置」に繰り返し入れ替えます。要素は、リストの最初の要素から現在の位置までの範囲で無作為に選択されます。
「ランダムアクセス」リストの場合、このメソッドは線形時間で動作します (位置を指定したアクセスにほぼ一定の時間が必要)。「順次アクセス」リストの場合、2 次時間を必要とする場合があります。
list - 順序が入れ替えられるリスト
public static void shuffle(List list,
Random rnd)
この実装は、リストの最後の要素から 2 番目の要素まで逆方向にたどり、無作為に選択された要素を「現在の位置」に繰り返し入れ替えます。要素は、リストの最初の要素から現在の位置までの範囲で無作為に選択されます。
「ランダムアクセス」リストの場合、このメソッドは線形時間で動作します (位置を指定したアクセスにほぼ一定の時間が必要) 。「順次アクセス」リストの場合、このメソッドは 2 次時間を必要とする場合があります。
list - 順序が入れ替えられるリストrnd - リストの順序を入れ替えるために使う乱数発生の元
public static void fill(List list,
Object o)
このメソッドは線形時間で動作します。
list - 指定された要素が挿入されるリストo - 指定されたリストに挿入される要素
public static void copy(List dest,
List src)
このメソッドは線形時間で動作します。
dest - コピー先のリストsrc - コピー元のリストpublic static Object min(Collection coll)
このメソッドはコレクション全体で繰り返し処理を行うので、コレクションのサイズに比例した時間が必要です。
coll - 最小の要素を決めるコレクションComparable
public static Object min(Collection coll,
Comparator comp)
このメソッドはコレクション全体で繰り返し処理を行うので、コレクションのサイズに比例した時間が必要です。
coll - 最小の要素を決めるコレクションComparablepublic static Object max(Collection coll)
このメソッドはコレクション全体で繰り返し処理を行うので、コレクションのサイズに比例した時間が必要です。
coll - 最大の要素を決めるコレクションComparable
public static Object max(Collection coll,
Comparator comp)
このメソッドはコレクション全体で繰り返し処理を行うので、コレクションのサイズに比例した時間が必要です。
coll - 最大の要素を決めるコレクションComparablepublic static Collection unmodifiableCollection(Collection c)
返されたコレクションは、hashCode オペレーションおよび equals オペレーションを基となるコレクションに渡すことはなく、Object の equals メソッドおよび hashCode メソッドに依存します。これは、基となるコレクションがセットまたはリストの場合にそれらのオペレーションの規約を守るために必要です。
返されたコレクションは、指定されたコレクションが直列化可能の場合は直列化可能です。
c - 変更不可能なビューが返されるコレクションpublic static Set unmodifiableSet(Set s)
返されるセットは、指定されたセットが直列化可能の場合に直列化可能になります。
s - 変更不可能なビューが返されるセットpublic static SortedSet unmodifiableSortedSet(SortedSet s)
返されたソートセットは、指定されたソートセットが直列化可能の場合は直列化可能です。
s - 変更不可能なビューが返されるソートセットpublic static List unmodifiableList(List list)
返されたリストは、指定されたリストが直列化可能の場合にだけ直列化可能になります。
list - 変更不可能なビューが返されるリストpublic static Map unmodifiableMap(Map m)
返されたマップは、指定されたマップが直列化可能の場合は直列化可能です。
m - 変更不可能なビューが返されるマップpublic static SortedMap unmodifiableSortedMap(SortedMap m)
返されたソートマップは、指定されたソートマップが直列化可能の場合は直列化可能です。
m - 変更不可能なビューが返されるソートマップpublic static Collection synchronizedCollection(Collection 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 Set synchronizedSet(Set 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 SortedSet synchronizedSortedSet(SortedSet s)
返されたソートセット、またはその subSet、headSet、あるいは tailSet ビューの繰り返し処理を行う場合、ユーザは、次に示すように手動で同期をとる必要があります。
SortedSet s = Collections.synchronizedSortedSet(new HashSortedSet());
...
synchronized(s) {
Iterator i = s.iterator(); // Must be in the synchronized block
while (i.hasNext())
foo(i.next());
}
または:
SortedSet s = Collections.synchronizedSortedSet(new HashSortedSet());
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 List synchronizedList(List 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 Map synchronizedMap(Map 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 SortedMap synchronizedSortedMap(SortedMap m)
返されたソートマップのコレクションビュー、または subMap、headMap、tailMap ビューのコレクションビューでの繰り返し処理を行う場合、ユーザは、次に示すように手動で同期をとる必要があります。
SortedMap m = Collections.synchronizedSortedMap(new HashSortedMap());
...
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 HashSortedMap());
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 Set singleton(Object o)
public static List nCopies(int n,
Object o)
n - 返されるリストの要素数o - 返されるリストで繰り返し現れる要素List.addAll(Collection),
List.addAll(int, Collection)public static Comparator reverseOrder()
Arrays.sort(a, Collections.reverseOrder());
返されるコンパレータは直列化可能です。
Comparablepublic static Enumeration enumeration(Collection c)
c - 列挙が返されるコレクション
|
Java プラットフォーム 1.2 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||