public class Collections extends Object
このクラスのメソッドに提供されるコレクションまたはクラス・オブジェクトが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 <T> boolean |
addAll(Collection<? super T> c, T... elements)
指定されたすべての要素を指定されたコレクションに追加します。
|
static <T> Queue<T> |
asLifoQueue(Deque<T> deque)
|
static <T> int |
binarySearch(List<? extends Comparable<? super T>> list, T key)
バイナリ・サーチ・アルゴリズムを使用して、指定されたリストから指定されたオブジェクトを検索します。
|
static <T> int |
binarySearch(List<? extends T> list, T key, Comparator<? super T> c)
バイナリ・サーチ・アルゴリズムを使用して、指定されたリストから指定されたオブジェクトを検索します。
|
static <E> Collection<E> |
checkedCollection(Collection<E> c, Class<E> type)
指定されたコレクションの、動的に型保証されたビューを返します。
|
static <E> List<E> |
checkedList(List<E> list, Class<E> type)
指定されたリストの動的に型保証されたビューを返します。
|
static <K,V> Map<K,V> |
checkedMap(Map<K,V> m, Class<K> keyType, Class<V> valueType)
指定されたマップの動的に型保証されたビューを返します。
|
static <K,V> NavigableMap<K,V> |
checkedNavigableMap(NavigableMap<K,V> m, Class<K> keyType, Class<V> valueType)
指定されたナビゲート可能マップの動的に型保証されたビューを返します。
|
static <E> NavigableSet<E> |
checkedNavigableSet(NavigableSet<E> s, Class<E> type)
指定されたナビゲート可能セットの動的に型保証されたビューを返します。
|
static <E> Queue<E> |
checkedQueue(Queue<E> queue, Class<E> type)
指定されたキューの動的に型保証されたビューを返します。
|
static <E> Set<E> |
checkedSet(Set<E> s, Class<E> type)
指定されたセットの動的に型保証されたビューを返します。
|
static <K,V> SortedMap<K,V> |
checkedSortedMap(SortedMap<K,V> m, Class<K> keyType, Class<V> valueType)
指定されたソート・マップの動的に型保証されたビューを返します。
|
static <E> SortedSet<E> |
checkedSortedSet(SortedSet<E> s, Class<E> type)
指定されたソート・セットの動的に型保証されたビューを返します。
|
static <T> void |
copy(List<? super T> dest, List<? extends T> src)
あるリストから別のリストにすべての要素をコピーします。
|
static boolean |
disjoint(Collection<?> c1, Collection<?> c2)
指定された2つのコレクションに共通の要素が存在しない場合、
true を返します。 |
static <T> Enumeration<T> |
emptyEnumeration()
要素が1つも含まれていない列挙を返します。
|
static <T> Iterator<T> |
emptyIterator()
要素が1つも含まれていないイテレータを返します。
|
static <T> List<T> |
emptyList()
空のリスト(不変)を返します。
|
static <T> ListIterator<T> |
emptyListIterator()
要素が1つも含まれていないリスト・イテレータを返します。
|
static <K,V> Map<K,V> |
emptyMap()
空のマップ(不変)を返します。
|
static <K,V> NavigableMap<K,V> |
emptyNavigableMap()
空のナビゲート可能マップ(不変)を返します。
|
static <E> NavigableSet<E> |
emptyNavigableSet()
空のナビゲート可能セット(不変)を返します。
|
static <T> Set<T> |
emptySet()
空のセット(不変)を返します。
|
static <K,V> SortedMap<K,V> |
emptySortedMap()
空のソート・マップ(不変)を返します。
|
static <E> SortedSet<E> |
emptySortedSet()
空のソート・セット(不変)を返します。
|
static <T> Enumeration<T> |
enumeration(Collection<T> c)
指定されたコレクションの列挙を返します。
|
static <T> void |
fill(List<? super T> list, T obj)
指定されたリストのすべての要素を指定された要素で置き換えます。
|
static int |
frequency(Collection<?> c, Object o)
指定されたコレクション内で、指定されたオブジェクトと等価な要素の数を返します。
|
static int |
indexOfSubList(List<?> source, List<?> target)
指定されたソース・リスト内で、指定されたターゲット・リストが最初に出現した位置の開始位置を返します。こうした出現がない場合は -1を返します。
|
static int |
lastIndexOfSubList(List<?> source, List<?> target)
指定されたソース・リスト内で、最後に出現した指定ターゲット・リストの開始位置を返します。こうした出現がない場合は -1を返します。
|
static <T> ArrayList<T> |
list(Enumeration<T> e)
指定された列挙により返された要素を含む配列リストを、返された順番で返します。
|
static <T extends Object & Comparable<? super T>> |
max(Collection<? extends T> coll)
要素の自然順序付けに従って、指定されたコレクションの最大の要素を返します。
|
static <T> T |
max(Collection<? extends T> coll, Comparator<? super T> comp)
指定されたコンパレータが示す順序に従って、指定されたコレクションの最大の要素を返します。
|
static <T extends Object & Comparable<? super T>> |
min(Collection<? extends T> coll)
要素の自然順序付けに従って、指定されたコレクションの最小の要素を返します。
|
static <T> T |
min(Collection<? extends T> coll, Comparator<? super T> comp)
指定されたコンパレータが示す順序に従って、指定されたコレクションの最小の要素を返します。
|
static <T> List<T> |
nCopies(int n, T o)
指定されたオブジェクトのn個のコピーで構成される不変のリストを返します。
|
static <E> Set<E> |
newSetFromMap(Map<E,Boolean> map)
指定されたマップに連動するセットを返します。
|
static <T> boolean |
replaceAll(List<T> list, T oldVal, T newVal)
リスト内に出現する指定された値をすべてほかの値に置き換えます。
|
static void |
reverse(List<?> list)
指定されたリストの要素の順序を逆にします。
|
static <T> Comparator<T> |
reverseOrder()
Comparable インタフェースを実装するオブジェクトのコレクションで自然順序付けの逆を義務付けるコンパレータを返します。 |
static <T> Comparator<T> |
reverseOrder(Comparator<T> cmp)
指定されたコンパレータの逆順を義務付けるコンパレータを返します。
|
static void |
rotate(List<?> list, int distance)
指定されたリストの要素を、指定された距離により回転します。
|
static void |
shuffle(List<?> list)
デフォルトの乱数発生の元を使用して、指定されたリストの順序を無作為に入れ替えます。
|
static void |
shuffle(List<?> list, Random rnd)
指定された乱数発生の元を使用して、指定されたリストの順序を無作為に入れ替えます。
|
static <T> Set<T> |
singleton(T o)
指定されたオブジェクトだけを格納している不変のセットを返します。
|
static <T> List<T> |
singletonList(T o)
指定されたオブジェクトだけを格納している不変のリストを返します。
|
static <K,V> Map<K,V> |
singletonMap(K key, V value)
指定された値に指定されたキーだけをマッピングする不変のマップを返します。
|
static <T extends Comparable<? super T>> |
sort(List<T> list)
指定されたリストを、その要素の自然順序付けに従って昇順にソートします。
|
static <T> void |
sort(List<T> list, Comparator<? super T> c)
指定されたコンパレータが示す順序に従って、指定されたリストをソートします。
|
static void |
swap(List<?> list, int i, int j)
指定されたリストの指定された位置にある要素をスワップします。
|
static <T> Collection<T> |
synchronizedCollection(Collection<T> c)
指定されたコレクションに連動する同期(スレッドセーフな)コレクションを返します。
|
static <T> List<T> |
synchronizedList(List<T> list)
指定されたリストに連動する同期(スレッドセーフな)リストを返します。
|
static <K,V> Map<K,V> |
synchronizedMap(Map<K,V> m)
指定されたマップに連動する同期(スレッドセーフな)マップを返します。
|
static <K,V> NavigableMap<K,V> |
synchronizedNavigableMap(NavigableMap<K,V> m)
指定されたナビゲート可能マップに連動する同期(スレッドセーフな)ナビゲート可能マップを返します。
|
static <T> NavigableSet<T> |
synchronizedNavigableSet(NavigableSet<T> s)
指定されたナビゲート可能セットに連動する同期(スレッドセーフな)ナビゲート可能セットを返します。
|
static <T> Set<T> |
synchronizedSet(Set<T> s)
指定されたセットに連動する同期(スレッドセーフな)セットを返します。
|
static <K,V> SortedMap<K,V> |
synchronizedSortedMap(SortedMap<K,V> m)
指定されたソート・マップに連動する同期(スレッドセーフな)ソート・マップを返します。
|
static <T> SortedSet<T> |
synchronizedSortedSet(SortedSet<T> s)
指定されたソート・セットに連動する同期(スレッドセーフな)ソート・セットを返します。
|
static <T> Collection<T> |
unmodifiableCollection(Collection<? extends T> c)
指定されたコレクションの変更不可能なビューを返します。
|
static <T> List<T> |
unmodifiableList(List<? extends T> list)
指定されたリストの変更不可能なビューを返します。
|
static <K,V> Map<K,V> |
unmodifiableMap(Map<? extends K,? extends V> m)
指定されたマップの変更不可能なビューを返します。
|
static <K,V> NavigableMap<K,V> |
unmodifiableNavigableMap(NavigableMap<K,? extends V> m)
指定されたナビゲート可能マップの変更不可能なビューを返します。
|
static <T> NavigableSet<T> |
unmodifiableNavigableSet(NavigableSet<T> s)
指定されたナビゲート可能セットの変更不可能なビューを返します。
|
static <T> Set<T> |
unmodifiableSet(Set<? extends T> s)
指定されたセットの変更不可能なビューを返します。
|
static <K,V> SortedMap<K,V> |
unmodifiableSortedMap(SortedMap<K,? extends V> m)
指定されたソート・マップの変更不可能なビューを返します。
|
static <T> SortedSet<T> |
unmodifiableSortedSet(SortedSet<T> s)
指定されたソート・セットの変更不可能なビューを返します。
|
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)
Comparable
インタフェースを実装する必要があります。また、リストのすべての要素は、相互に比較可能でなければいけません。つまり、リストの要素がe1
およびe2
の場合に、e1.compareTo(e2)
でClassCastException
をスローすべきではありません。
このソートは固定であることが保証されています。つまり、ソートを実行しても、同等の要素の順序は変わりません。
指定されたリストは変更可能でなければなりませんが、サイズ変更はできなくてもかまいません。
実装にあたっての注意:この実装は安定した適応型の反復マージ・ソートです。このソートでは、入力配列がランダムに順序付けられる場合は従来のマージ・ソートのパフォーマンスを提供しながら、入力配列が部分的にソートされている場合は必要となる比較回数がn lg(n)よりもかなり少なくなります。入力配列がほとんどソートされている場合、この実装ではおよそn回の比較が必要になります。一時ストレージの要件は、ほとんどソートされている入力配列用の小さな定数から、ランダムに順序付けられた入力配列用のn/2のオブジェクト参照までさまざまです。
この実装では、その入力配列で昇順と降順を等しく利用するため、同じ入力配列のさまざまな部分で昇順と降順を利用できます。それは、2つ以上のソートされた配列をマージするのに適切です。つまり、それらの配列を連結し、結果となる配列をソートするだけです。
この実装は、Tim Peters氏によるPython用のリスト・ソート(TimSort)から応用されました。それは、『Proceedings of the Fourth Annual ACM-SIAM Symposium on Discrete Algorithms』(1993年1月)の467-474ページに記載されている、Peter McIlroy氏の「Optimistic Sorting and Information Theoretic Complexity」からの技術を採用しています。
この実装は、指定されたリストの配列へのダンプ、配列のソート、リストの反復処理を行うことにより、配列の対応する位置から各要素を再設定します。これは、リンクされたリストを適所にソートしようとした場合のn2 log(n)のパフォーマンスになるのを回避します。
T
- リスト内のオブジェクトのクラスlist
- ソートされるリスト。ClassCastException
- リストに相互に比較可能でない要素(たとえば、文字列と整数)がある場合。UnsupportedOperationException
- 指定されたリストのリスト・イテレータがset
オペレーションをサポートしない場合。IllegalArgumentException
- (オプション)リスト要素の自然順序付けがComparable
の規約に違反していることが実装によって検出された場合public static <T> void sort(List<T> list, Comparator<? super T> c)
e1
およびe2
の場合に、c.compare(e1, e2)
でClassCastException
をスローすべきではありません。
このソートは固定であることが保証されています。つまり、ソートを実行しても、同等の要素の順序は変わりません。
指定されたリストは変更可能でなければなりませんが、サイズ変更はできなくてもかまいません。
実装にあたっての注意:この実装は安定した適応型の反復マージ・ソートです。このソートでは、入力配列がランダムに順序付けられる場合は従来のマージ・ソートのパフォーマンスを提供しながら、入力配列が部分的にソートされている場合は必要となる比較回数がn lg(n)よりもかなり少なくなります。入力配列がほとんどソートされている場合、この実装ではおよそn回の比較が必要になります。一時ストレージの要件は、ほとんどソートされている入力配列用の小さな定数から、ランダムに順序付けられた入力配列用のn/2のオブジェクト参照までさまざまです。
この実装では、その入力配列で昇順と降順を等しく利用するため、同じ入力配列のさまざまな部分で昇順と降順を利用できます。それは、2つ以上のソートされた配列をマージするのに適切です。つまり、それらの配列を連結し、結果となる配列をソートするだけです。
この実装は、Tim Peters氏によるPython用のリスト・ソート(TimSort)から応用されました。それは、『Proceedings of the Fourth Annual ACM-SIAM Symposium on Discrete Algorithms』(1993年1月)の467-474ページに記載されている、Peter McIlroy氏の「Optimistic Sorting and Information Theoretic Complexity」からの技術を採用しています。
この実装は、指定されたリストの配列へのダンプ、配列のソート、リストの反復処理を行うことにより、配列の対応する位置から各要素を再設定します。これは、リンクされたリストを適所にソートしようとした場合のn2 log(n)のパフォーマンスになるのを回避します。
T
- リスト内のオブジェクトのクラスlist
- ソートされるリスト。c
- リストの順序を決定するコンパレータ。null
値は、要素の自然順序付けが使用されることを示す。ClassCastException
- リストに、指定されたコンパレータで相互に比較できない要素がある場合。UnsupportedOperationException
- 指定されたリストのリスト・イテレータがset
オペレーションをサポートしない場合。IllegalArgumentException
- (オプション)コンパレータがComparator
の規約に違反していることが検出された場合public static <T> int binarySearch(List<? extends Comparable<? super T>> list, T key)
sort(List)
メソッドを使用して要素の自然順序付けに従って昇順にソートする必要があります。リストがソートされていない場合、結果は定義されません。指定されたオブジェクトと等しい要素がリストに複数ある場合、どれが見つかるかは保証されません。
「ランダム・アクセス」リストの場合、このメソッドはlog(n)時間で動作します(位置を指定したアクセスにほぼ一定の時間が必要)。指定されたリストがRandomAccess
インタフェースを実装しない、大きなリストである場合、このメソッドはO(n)リンク・トラバーサルとO(log n)要素比較を実行するイテレータ・ベースのバイナリ・サーチを行います。
T
- リスト内のオブジェクトのクラス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)要素比較を実行するイテレータ・ベースのバイナリ・サーチを行います。
T
- リスト内のオブジェクトのクラス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)
このメソッドは一次時間で動作します。
T
- リスト内のオブジェクトのクラスlist
- 指定された要素が挿入されるリスト。obj
- 指定されたリストに挿入される要素。UnsupportedOperationException
- 指定されたリストまたはそのリスト・イテレータがsetオペレーションをサポートしない場合。public static <T> void copy(List<? super T> dest, List<? extends T> src)
このメソッドは一次時間で動作します。
T
- リスト内のオブジェクトのクラスdest
- コピー先のリスト。src
- コピー元のリスト。IndexOutOfBoundsException
- コピー先のリストがコピー元のリスト全体を格納するには小さすぎる場合。UnsupportedOperationException
- コピー・リストのリスト・イテレータがsetオペレーションをサポートしない場合。public static <T extends Object & Comparable<? super T>> T min(Collection<? extends T> coll)
このメソッドはコレクション全体で反復処理を行うので、コレクションのサイズに比例した時間が必要です。
T
- コレクション内のオブジェクトのクラスcoll
- 最小の要素を決めるコレクション。ClassCastException
- コレクションに相互に比較可能でない要素(たとえば、文字列と整数)がある場合。NoSuchElementException
- コレクションが空の場合。Comparable
public static <T> T min(Collection<? extends T> coll, Comparator<? super T> comp)
このメソッドはコレクション全体で反復処理を行うので、コレクションのサイズに比例した時間が必要です。
T
- コレクション内のオブジェクトのクラスcoll
- 最小の要素を決めるコレクション。comp
- 最小の要素リストが決定されるコンパレータ。null値は、要素の自然順序付けが使用されることを示す。ClassCastException
- コレクションに、指定されたコンパレータで相互に比較できない要素がある場合。NoSuchElementException
- コレクションが空の場合。Comparable
public static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll)
このメソッドはコレクション全体で反復処理を行うので、コレクションのサイズに比例した時間が必要です。
T
- コレクション内のオブジェクトのクラスcoll
- 最大の要素を決めるコレクション。ClassCastException
- コレクションに相互に比較可能でない要素(たとえば、文字列と整数)がある場合。NoSuchElementException
- コレクションが空の場合。Comparable
public static <T> T max(Collection<? extends T> coll, Comparator<? super T> comp)
このメソッドはコレクション全体で反復処理を行うので、コレクションのサイズに比例した時間が必要です。
T
- コレクション内のオブジェクトのクラス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
インタフェースを実装している場合、この実装では最初の要素を移動すべき位置に入れ替えます。次に、置き換えられた要素が最初の要素の位置にスワップされるまで、置き換えられた要素を移動すべき位置に繰り返し入れ替えます。必要に応じて、回転が完了するまで、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)
T
- リスト内のオブジェクトのクラスlist
- 置換が生じるリスト。oldVal
- 置換前の値。newVal
- oldValの置換後の値。UnsupportedOperationException
- 指定されたリストまたはそのリスト・イテレータがsetオペレーションをサポートしない場合。public static int indexOfSubList(List<?> source, List<?> target)
source.subList(i, i+target.size()).equals(target)
となる最小のインデックスiを返し、そのようなインデックスが存在しない場合は-1を返します。(target.size() > source.size()
の場合は-1を返す。)
この実装は、ソース・リストをスキャニングする「強引な」技術を使用して、ソース・リストの各位置でターゲットと一致するか順番に検索します。
source
- 最初に出現するtargetを検索するリスト。target
- sourceのsubListとして検索するリスト。public static int lastIndexOfSubList(List<?> source, List<?> target)
source.subList(i, i+target.size()).equals(target)
となる最大のインデックスiを返し、そのようなインデックスが存在しない場合は-1を返します。(target.size() > source.size()
の場合は-1を返す。)
この実装では、ソース・リストの反復処理を行う「強引な」技術を使用して、各位置でターゲットと一致するか順番に検索します。
source
- 最後に出現するtargetを検索するリスト。target
- sourceのsubListとして検索するリスト。public static <T> Collection<T> unmodifiableCollection(Collection<? extends T> c)
返されたコレクションは、hashCodeオペレーションおよびequalsオペレーションを基となるコレクションに渡すことはなく、ObjectのequalsメソッドおよびhashCodeメソッドに依存します。これは、基となるコレクションがセットまたはリストの場合にそれらのオペレーションの規約を守るために必要です。
返されたコレクションは、指定されたコレクションが直列化可能の場合は直列化可能です。
T
- コレクション内のオブジェクトのクラスc
- 変更不可能なビューが返されるコレクション。public static <T> Set<T> unmodifiableSet(Set<? extends T> s)
返されるセットは、指定されたセットが直列化可能の場合に直列化可能になります。
T
- セット内のオブジェクトのクラスs
- 変更不可能なビューが返されるセット。public static <T> SortedSet<T> unmodifiableSortedSet(SortedSet<T> s)
返されたソート・セットは、指定されたソート・セットが直列化可能の場合は直列化可能です。
T
- セット内のオブジェクトのクラスs
- 変更不可能なビューが返されるソート・セット。public static <T> NavigableSet<T> unmodifiableNavigableSet(NavigableSet<T> s)
subSet
、headSet
、またはtailSet
ビューを使うかに関係なく、返されたナビゲート可能セットを変更しようとするとUnsupportedOperationException
がスローされます。指定されたナビゲート可能セットが直列化可能の場合は、返されるナビゲート可能セットも直列化可能になります。
T
- セット内のオブジェクトのクラスs
- 変更不可能なビューが返されるナビゲート可能セットpublic static <T> List<T> unmodifiableList(List<? extends T> list)
返されたリストは、指定されたリストが直列化可能の場合にだけ直列化可能になります。同様に、指定されたリストがRandomAccess
を実装する場合にだけ、返されたリストはこれを実装します。
T
- リスト内のオブジェクトのクラスlist
- 変更不可能なビューが返されるリスト。public static <K,V> Map<K,V> unmodifiableMap(Map<? extends K,? extends V> m)
返されたマップは、指定されたマップが直列化可能の場合は直列化可能です。
K
- マップ・キーのクラスV
- マップ値のクラスm
- 変更不可能なビューが返されるマップ。public static <K,V> SortedMap<K,V> unmodifiableSortedMap(SortedMap<K,? extends V> m)
返されたソート・マップは、指定されたソート・マップが直列化可能の場合は直列化可能です。
K
- マップ・キーのクラスV
- マップ値のクラスm
- 変更不可能なビューが返されるソート・マップ。public static <K,V> NavigableMap<K,V> unmodifiableNavigableMap(NavigableMap<K,? extends V> m)
subMap
、headMap
、またはtailMap
ビューを使うかに関係なく、返されたナビゲート可能マップを変更しようとするとUnsupportedOperationException
がスローされます。指定されたナビゲート可能マップが直列化可能の場合は、返されるナビゲート可能マップも直列化可能になります。
K
- マップ・キーのクラスV
- マップ値のクラスm
- 変更不可能なビューが返されるナビゲート可能マップpublic static <T> Collection<T> synchronizedCollection(Collection<T> c)
Iterator
、Spliterator
、またはStream
を介して、返されたコレクションのトラバースを行う場合、ユーザーは手動でその同期をとる必要があります。
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メソッドに依存します。これは、基となるコレクションがセットまたはリストの場合にそれらのオペレーションの規約を守るために必要です。
返されたコレクションは、指定されたコレクションが直列化可能の場合は直列化可能です。
T
- コレクション内のオブジェクトのクラス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()); }これを行わない場合、動作は保証されません。
返されるセットは、指定されたセットが直列化可能の場合に直列化可能になります。
T
- セット内のオブジェクトのクラス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()); }これを行わない場合、動作は保証されません。
返されたソート・セットは、指定されたソート・セットが直列化可能の場合は直列化可能です。
T
- セット内のオブジェクトのクラスs
- 同期ソート・セットに「ラップ」されるソート・セット。public static <T> NavigableSet<T> synchronizedNavigableSet(NavigableSet<T> s)
返されたナビゲート可能セット、あるいはそのsubSet
、headSet
、またはtailSet
ビューの反復処理を行う場合、ユーザーは手動でその同期をとる必要があります。
NavigableSet s = Collections.synchronizedNavigableSet(new TreeSet()); ... synchronized (s) { Iterator i = s.iterator(); // Must be in the synchronized block while (i.hasNext()) foo(i.next()); }または
NavigableSet s = Collections.synchronizedNavigableSet(new TreeSet()); NavigableSet s2 = s.headSet(foo, true); ... synchronized (s) { // Note: s, not s2!!! Iterator i = s2.iterator(); // Must be in the synchronized block while (i.hasNext()) foo(i.next()); }これを行わない場合、動作は保証されません。
指定されたナビゲート可能セットが直列化可能の場合は、返されるナビゲート可能セットも直列化可能になります。
T
- セット内のオブジェクトのクラス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()); }これを行わない場合、動作は保証されません。
返されたリストは、指定されたリストが直列化可能の場合にだけ直列化可能になります。
T
- リスト内のオブジェクトのクラス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()); }これを行わない場合、動作は保証されません。
返されたマップは、指定されたマップが直列化可能の場合は直列化可能です。
K
- マップ・キーのクラスV
- マップ値のクラス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()); }これを行わない場合、動作は保証されません。
返されたソート・マップは、指定されたソート・マップが直列化可能の場合は直列化可能です。
K
- マップ・キーのクラスV
- マップ値のクラスm
- 同期ソート・マップに「ラップ」されるソート・マップ。public static <K,V> NavigableMap<K,V> synchronizedNavigableMap(NavigableMap<K,V> m)
返されたナビゲート可能マップのコレクション・ビュー、あるいはそのsubMap
、headMap
、またはtailMap
ビューのコレクション・ビューでの反復処理を行う場合、ユーザーは手動でその同期をとる必要があります。
NavigableMap m = Collections.synchronizedNavigableMap(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()); }または
NavigableMap m = Collections.synchronizedNavigableMap(new TreeMap()); NavigableMap m2 = m.subMap(foo, true, bar, false); ... 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()); }これを行わない場合、動作は保証されません。
指定されたナビゲート可能マップが直列化可能の場合は、返されるナビゲート可能マップも直列化可能になります。
K
- マップ・キーのクラスV
- マップ値のクラスm
- 同期されたナビゲート可能マップに「ラップ」されるナビゲート可能マップpublic static <E> Collection<E> checkedCollection(Collection<E> c, Class<E> type)
ClassCastException
がスローされます。動的に型保証されたビューが生成される前はコレクションに不正な型の要素が含まれず、後続のコレクションへのアクセスがすべてこのビューを介して行われる場合、コレクションには不正な型の要素が含まれないことが保証されます。
言語内のジェネリック・メカニズムによりコンパイル時(静的)の型チェックが提供されますが、チェックされないキャストを使用してこのメカニズムを無効にすることはできません。通常、この種のチェックされない操作すべてでコンパイラが警告を発行するため、これは問題にはなりません。ただし、時として、静的な型チェックだけでは不十分な場合があります。たとえば、コレクションがサード・パーティのライブラリに渡されるが、ライブラリ・コードが不正な型の要素を挿入してコレクションを破壊してしまうことがあってはならない場合などです。
動的に型保証されたビューの別の用途は、デバッグです。プログラムがClassCastException
で失敗し、不正な型の要素がパラメータ化されたコレクションに入れられたことを示す場合を考えましょう。残念なことに、不正な要素が挿入されるとこの例外が常に発生する可能性があるため、この例外から問題のソースに関する情報をほとんどまたはまったく得ることができません。問題が再現可能な場合は、プログラムを変更して動的な型保証されたビューでコレクションを一時的にラップすることで、ソースをすばやく判定できます。たとえば、宣言
Collection<String> c = new HashSet<>();
は、次の宣言で一時的に置き換えることができます。
Collection<String> c = Collections.checkedCollection(
new HashSet<>(), String.class);
プログラムを再度実行すると、不正な型の要素がコレクションに挿入された位置でプログラムが失敗するため、問題の原因をはっきりと識別できます。問題を修正したら、変更した宣言を元に戻します。
返されたコレクションは、hashCodeオペレーションおよびequalsオペレーションを基となるコレクションに渡すことはなく、Object
のequals
メソッドおよびhashCode
メソッドに依存します。これは、基となるコレクションがセットまたはリストの場合にそれらのオペレーションの規約を守るために必要です。
返されたコレクションは、指定されたコレクションが直列化可能の場合は直列化可能です。
null
はどの参照型の値ともみなされるため、基になるコレクションがnull要素の挿入を許可するときは必ず、返されるコレクションもこれを許可します。
E
- コレクション内のオブジェクトのクラスc
- 動的に型保証されたビューが返されるコレクションtype
- c
が保持することを許された要素の型public static <E> Queue<E> checkedQueue(Queue<E> queue, Class<E> type)
ClassCastException
がスローされます。動的に型保証されたビューが生成される前はキューに不正な型の要素が含まれず、キューへの後続のアクセスがすべてこのビューを介して行われる場合、キューには不正な型の要素が含まれないことが保証されます。
動的に型保証されたビューの使用については、checkedCollection
メソッドのドキュメントを参照してください。
指定されたキューが直列化可能の場合は、返されるキューも直列化可能になります。
null
はどの参照型の値ともみなされるため、基になるキューがnull
要素の挿入を許可するときは必ず、返されるキューもこれを許可します。
E
- キュー内のオブジェクトのクラスqueue
- 動的に型保証されたビューが返されるキューtype
- queue
が保持することを許された要素の型public static <E> Set<E> checkedSet(Set<E> s, Class<E> type)
ClassCastException
がスローされます。動的に型保証されたビューが生成される前はセットに不正な型の要素が含まれず、セットへの後続のアクセスがすべてこのビューを介して行われる場合、セットには不正な型の要素が含まれないことが保証されます。
動的に型保証されたビューの使用については、checkedCollection
メソッドのドキュメントを参照してください。
返されるセットは、指定されたセットが直列化可能の場合に直列化可能になります。
null
はどの参照型の値ともみなされるため、基になるセットがnull要素の挿入を許可するときは必ず、返されるセットもこれを許可します。
E
- セット内のオブジェクトのクラスs
- 動的に型保証されたビューが返されるセットtype
- s
が保持することを許された要素の型public static <E> SortedSet<E> checkedSortedSet(SortedSet<E> s, Class<E> type)
ClassCastException
がスローされます。動的に型保証されたビューが生成される前はソート・セットに不正な型の要素が含まれず、ソート・セットへの後続のアクセスがすべてこのビューを介して行われる場合、ソート・セットには不正な型の要素が含まれないことが保証されます。
動的に型保証されたビューの使用については、checkedCollection
メソッドのドキュメントを参照してください。
返されたソート・セットは、指定されたソート・セットが直列化可能の場合は直列化可能です。
null
はどの参照型の値ともみなされるため、基になるソート・セットがnull要素の挿入を許可するときは必ず、返されるソート・セットもこれを許可します。
E
- セット内のオブジェクトのクラスs
- 動的に型保証されたビューが返されるソート・セットtype
- s
が保持することを許された要素の型public static <E> NavigableSet<E> checkedNavigableSet(NavigableSet<E> s, Class<E> type)
ClassCastException
がスローされます。動的に型保証されたビューが生成される前はナビゲート可能セットに不正な型の要素が含まれず、ナビゲート可能セットへの後続のアクセスがすべてこのビューを介して行われる場合、ナビゲート可能セットには不正な型の要素が含まれないことが保証されます。
動的に型保証されたビューの使用については、checkedCollection
メソッドのドキュメントを参照してください。
指定されたナビゲート可能セットが直列化可能の場合は、返されるナビゲート可能セットも直列化可能になります。
null
はどの参照型の値とも見なされるため、基になるソート・セットがnull要素の挿入を許可するときは必ず、返されるナビゲート可能セットもこれを許可します。
E
- セット内のオブジェクトのクラスs
- 動的に型保証されたビューが返されるナビゲート可能セットtype
- s
が保持することを許された要素の型public static <E> List<E> checkedList(List<E> list, Class<E> type)
ClassCastException
がスローされます。動的に型保証されたビューが生成される前はリストに不正な型の要素が含まれず、リストへの後続のアクセスがすべてこのビューを介して行われる場合、リストには不正な型の要素が含まれないことが保証されます。
動的に型保証されたビューの使用については、checkedCollection
メソッドのドキュメントを参照してください。
返されたリストは、指定されたリストが直列化可能の場合にだけ直列化可能になります。
null
はどの参照型の値ともみなされるため、基になるリストがnull要素の挿入を許可するときは必ず、返されるリストもこれを許可します。
E
- リスト内のオブジェクトのクラスlist
- 動的に型保証されたビューが返されるリストtype
- list
が保持することを許された要素の型public static <K,V> Map<K,V> checkedMap(Map<K,V> m, Class<K> keyType, Class<V> valueType)
ClassCastException
がスローされます。同様に、キーに現在関連付けられている値を変更しようとすると、変更がマップ自体を介して試みられるか、マップのentry set
ビューから取得されたMap.Entry
インスタンスを介して試みられるかにかかわらず、すぐにClassCastException
がスローされます。
動的に型保証されたビューが生成される前に、不正な型のキーまたは値がマップに含まれず、マップへの後続のアクセスがすべてビュー(またはコレクション・ビューの1つ)を介して行われる場合、マップに不正な型のキーや値が含まれないことが保証されます。
動的に型保証されたビューの使用については、checkedCollection
メソッドのドキュメントを参照してください。
返されたマップは、指定されたマップが直列化可能の場合は直列化可能です。
null
はどの参照型の値ともみなされるため、基になるマップがnullのキーまたは値の挿入を許可するときは必ず、返されるマップも許可します。
K
- マップ・キーのクラスV
- マップ値のクラスm
- 動的に型保証されたビューが返されるマップkeyType
- m
が保持することを許されたキーの型valueType
- m
が保持することを許された値の型public static <K,V> SortedMap<K,V> checkedSortedMap(SortedMap<K,V> m, Class<K> keyType, Class<V> valueType)
ClassCastException
がスローされます。同様に、キーに現在関連付けられている値を変更しようとすると、変更がマップ自体を介して試みられるか、マップのentry set
ビューから取得されたMap.Entry
インスタンスを介して試みられるかにかかわらず、すぐにClassCastException
がスローされます。
動的に型保証されたビューが生成される前に、不正な型のキーまたは値がマップに含まれず、マップへの後続のアクセスがすべてビュー(またはコレクション・ビューの1つ)を介して行われる場合、マップに不正な型のキーや値が含まれないことが保証されます。
動的に型保証されたビューの使用については、checkedCollection
メソッドのドキュメントを参照してください。
返されたマップは、指定されたマップが直列化可能の場合は直列化可能です。
null
はどの参照型の値ともみなされるため、基になるマップがnullのキーまたは値の挿入を許可するときは必ず、返されるマップも許可します。
K
- マップ・キーのクラスV
- マップ値のクラスm
- 動的に型保証されたビューが返されるマップkeyType
- m
が保持することを許されたキーの型valueType
- m
が保持することを許された値の型public static <K,V> NavigableMap<K,V> checkedNavigableMap(NavigableMap<K,V> m, Class<K> keyType, Class<V> valueType)
ClassCastException
がスローされます。同様に、キーに現在関連付けられている値を変更しようとすると、変更がマップ自体を介して試みられるか、マップのentry set
ビューから取得されたMap.Entry
インスタンスを介して試みられるかにかかわらず、すぐにClassCastException
がスローされます。
動的に型保証されたビューが生成される前に、不正な型のキーまたは値がマップに含まれず、マップへの後続のアクセスがすべてビュー(またはコレクション・ビューの1つ)を介して行われる場合、マップに不正な型のキーや値が含まれないことが保証されます。
動的に型保証されたビューの使用については、checkedCollection
メソッドのドキュメントを参照してください。
返されたマップは、指定されたマップが直列化可能の場合は直列化可能です。
null
はどの参照型の値ともみなされるため、基になるマップがnullのキーまたは値の挿入を許可するときは必ず、返されるマップも許可します。
K
- マップ・キーの型V
- マップ値の型m
- 動的に型保証されたビューが返されるマップkeyType
- m
が保持することを許されたキーの型valueType
- m
が保持することを許された値の型public static <T> Iterator<T> emptyIterator()
hasNext
は常にfalse
を返します。next
は常にNoSuchElementException
をスローします。remove
は常にIllegalStateException
をスローします。複数の呼び出しから同じオブジェクトを返すために、このメソッドの実装は許可されていますが、必須ではありません。
T
- そのイテレータに要素が含まれているとした場合の、その要素の型public static <T> ListIterator<T> emptyListIterator()
hasNext
およびhasPrevious
は常にfalse
を返します。next
およびprevious
は常にNoSuchElementException
をスローします。remove
およびset
は常にIllegalStateException
をスローします。add
は常にUnsupportedOperationException
をスローします。nextIndex
は常に0
を返します。previousIndex
は常に-1
を返します。複数の呼び出しから同じオブジェクトを返すために、このメソッドの実装は許可されていますが、必須ではありません。
T
- そのイテレータに要素が含まれているとした場合の、その要素の型public static <T> Enumeration<T> emptyEnumeration()
hasMoreElements
は常にfalse
を返します。nextElement
は常にNoSuchElementException
をスローします。複数の呼び出しから同じオブジェクトを返すために、このメソッドの実装は許可されていますが、必須ではありません。
T
- 列挙内のオブジェクトのクラスpublic static final <T> Set<T> emptySet()
次に、空のセットを取得するための型保証された方法の例を示します。
Set<String> s = Collections.emptySet();
Set
オブジェクトを作成する必要はありません。このメソッドは同様の名前が付けられたフィールドを使用した比較可能なコストがあるようなものです。(このメソッドとは異なり、フィールドは型保証しない。)T
- セット内のオブジェクトのクラスEMPTY_SET
public static <E> SortedSet<E> emptySortedSet()
次に、空のソート・セットを取得するための型保証された方法の例を示します。
SortedSet<String> s = Collections.emptySortedSet();
SortedSet
オブジェクトを作成する必要はありません。E
- そのセットに要素が含まれているとした場合の、その要素の型public static <E> NavigableSet<E> emptyNavigableSet()
次に、空のナビゲート可能セットを取得するための型保証された方法の例を示します。
NavigableSet<String> s = Collections.emptyNavigableSet();
NavigableSet
オブジェクトを作成する必要はありません。E
- そのセットに要素が含まれているとした場合の、その要素の型public static final <T> List<T> emptyList()
次に、空のリストを取得するための型保証された方法の例を示します。
List<String> s = Collections.emptyList();実装にあたっての注意: このメソッドの実装では、呼び出しごとに個別のListオブジェクトを作成する必要はありません。このメソッドは同様の名前が付けられたフィールドを使用した比較可能なコストがあるようなものです。(このメソッドとは異なり、フィールドは型保証しない。)
T
- そのリストに要素が含まれているとした場合の、その要素の型EMPTY_LIST
public static final <K,V> Map<K,V> emptyMap()
次に、空のマップを取得するための型保証された方法の例を示します。
Map<String, Date> s = Collections.emptyMap();
Map
オブジェクトを作成する必要はありません。このメソッドは同様の名前が付けられたフィールドを使用した比較可能なコストがあるようなものです。(このメソッドとは異なり、フィールドは型保証しない。)K
- マップ・キーのクラスV
- マップ値のクラスEMPTY_MAP
public static final <K,V> SortedMap<K,V> emptySortedMap()
次に、空のマップを取得するための型保証された方法の例を示します。
SortedMap<String, Date> s = Collections.emptySortedMap();
SortedMap
オブジェクトを作成する必要はありません。K
- マップ・キーのクラスV
- マップ値のクラスpublic static final <K,V> NavigableMap<K,V> emptyNavigableMap()
次に、空のマップを取得するための型保証された方法の例を示します。
NavigableMap<String, Date> s = Collections.emptyNavigableMap();
NavigableMap
オブジェクトを作成する必要はありません。K
- マップ・キーのクラスV
- マップ値のクラスpublic static <T> Set<T> singleton(T o)
T
- セット内のオブジェクトのクラスo
- 返されるセットに格納される唯一のオブジェクト。public static <T> List<T> singletonList(T o)
T
- リスト内のオブジェクトのクラスo
- 返されるリストに格納される唯一のオブジェクト。public static <K,V> Map<K,V> singletonMap(K key, V value)
K
- マップ・キーのクラスV
- マップ値のクラスkey
- 返されるマップに格納される唯一のキー。value
- 返されるマップによってkeyがマッピングされる値。public static <T> List<T> nCopies(int n, T o)
T
- コピー対象のオブジェクトおよび返されるリスト内のオブジェクトのクラス。n
- 返されるリストの要素数。o
- 返されるリストに繰返し現れる要素。IllegalArgumentException
- n < 0
の場合List.addAll(Collection)
, List.addAll(int, Collection)
public static <T> Comparator<T> reverseOrder()
Comparable
インタフェースを実装するオブジェクトのコレクションで自然順序付けの逆を義務付けるコンパレータを返します。自然順序付けとは、オブジェクト自身のcompareTo
メソッドが示す順序のことです。これにより、Comparable
インタフェースを実装するオブジェクトのコレクション(または配列)を簡単に逆自然順序でソート(または保守)できます。たとえば、a
が文字列の配列であると仮定します。次のようになります。 Arrays.sort(a, Collections.reverseOrder());逆引きの辞書編集順(アルファベット順)で配列をソートします。
返されるコンパレータは直列化可能です。
T
- コンパレータによって比較されるオブジェクトのクラスComparable
public static <T> Comparator<T> reverseOrder(Comparator<T> cmp)
null
の場合、このメソッドはreverseOrder()
と等価になります(つまり、Comparableインタフェースを実装するオブジェクトのコレクションに逆の自然順序を義務付けるコンパレータを返す)。
返されるコンパレータは直列化可能です(指定されたコンパレータも直列化可能であるかnull
の場合)。
T
- コンパレータによって比較されるオブジェクトのクラスcmp
- 返されるコンパレータによってその順序が逆になるコンパレータ、またはnull
public static <T> Enumeration<T> enumeration(Collection<T> c)
T
- コレクション内のオブジェクトのクラスc
- 列挙が返されるコレクション。Enumeration
public static <T> ArrayList<T> list(Enumeration<T> e)
T
- 列挙によって返されるオブジェクトのクラスe
- 返される配列リストの要素を提供する列挙Enumeration
, ArrayList
public static int frequency(Collection<?> c, Object o)
c
- oの頻度を判定するコレクションo
- 頻度を判定するオブジェクトo
に等しいc
内の要素の数NullPointerException
- cがnullの場合public static boolean disjoint(Collection<?> c1, Collection<?> c2)
true
を返します。
Collection
の汎用規約に準拠しないコレクションに対してこのメソッドを使用する場合は、注意が必要です。実装が、一方のコレクションに対して処理を繰返し実行し、他方のコレクション内に含まれるかどうかをテストする(または等価な計算を実行する)場合があります。一方のコレクションが非標準の等価テストを使用する場合(順序が等価との互換性を持たないSortedSet
や、IdentityHashMap
のキー・セットのように)、両方のコレクションで同じ非標準の等価テストを使用する必要があります。そうでない場合のこのメソッドの結果は定義されていません。
格納できる要素に制限があるコレクションを使用する場合も、注意が必要です。コレクションの実装では、不適当だと判断される要素を含む任意の操作に対して、例外をスローすることが許可されます。完全な安全性を確保するには、指定されたコレクションには、両方のコレクションで適当な要素となる要素のみを含めるようにする必要があります。
両方のパラメータ内で同じコレクションを渡すことは許容されています。この場合、コレクションが空の場合にのみ、メソッドはtrue
を返します。
c1
- コレクションc2
- コレクションtrue
。NullPointerException
- いずれかのコレクションがnull
の場合。NullPointerException
- あるコレクションにnull
要素が含まれるが、別のコレクションではnull
が適当な要素でない場合(オプション)ClassCastException
- あるコレクションに含まれる要素の型が、別のコレクションでは不適当な場合(オプション)@SafeVarargs public static <T> boolean addAll(Collection<? super T> c, T... elements)
要素を個別に指定する場合、このメソッドでは、次の例のように、数種類の要素を既存のコレクションに簡単に追加できます。
Collections.addAll(flavors, "Peaches 'n Plutonium", "Rocky Racoon");
T
- 追加する要素およびコレクションの要素のクラス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>());
E
- マップ・キーおよび返されるセット内のオブジェクトのクラス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
呼び出しとして実装されます。
T
- 両端キュー内のオブジェクトのクラスdeque
- 両端キュー バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.