1. メソッド一覧

Java の作成者が、配列を操作する際の利便性を考慮して、ヘルパー クラス全体を作成したことを覚えていますかArrays?

彼らはコレクションに対しても同じことをしました。Java には、java.util.Collectionsコレクションの操作に役立つメソッドが多数含まれたクラスがあります。最も興味深いものだけを以下に示します。

メソッド 説明
addAll(colls, e1, e2, e3, ...)
要素e1e2e3、 ... をcollsコレクションに追加します
fill(list, obj)
渡されたリスト内のすべての要素を次のように置き換えます。obj
nCopies(n, obj)
オブジェクトnのコピーのリストを返します。obj
replaceAll(list, oldVal, newVal)
リストoldValnewValのすべてのインスタンスを に置き換えますlist
copy(dest, src)
リストのすべての要素をリストsrcにコピーしますdest
reverse(list)
リストを反転します。
sort(list)
リストを昇順に並べ替えます
rotate(list, n)
リストの要素を要素listごとに循環的にシフトします。n
shuffle(list)
リスト内の要素をランダムにシャッフルします
min(colls)
collsコレクション内の最小要素を検索します
max(colls)
collsコレクション内の最大の要素を検索します
frequency(colls, obj)
要素がコレクション内で何回obj出現するかを決定します。colls
binarySearch(list, key)
ソートされたリスト内でを検索しkey、対応するインデックスを返します。
disjoint(colls1, colls2)
trueコレクションに共通の要素がない場合に返します。
重要:

ArrayListこれらのメソッドの多くは、HashSetおよびクラス自体を使用しませんHashMapが、対応するインターフェイス 、Collection<T>List<T>を使用しますMap<K, V>

これは問題ではありません。メソッドが を受け入れる場合List<T>、いつでもそれに を渡すことができますArrayList<Integer>が、代入演算子は逆方向には機能しません。


2. コレクションの作成と変更

Collections.addAll(Collection<T> colls, T e1, T e2, T e3, ...)方法

このaddAll()メソッドは、要素e1e2e3、 ...をcollsコレクションに追加します。要素はいくつでも渡すことができます。

コード コンソール出力
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 1, 2, 3, 4, 5);

for (int i: list)
   System.out.println(i);
1
2
3
4
5

Collections.fill(List<T> list, T obj)方法

このfill()メソッドは、コレクションのすべての要素を要素listに置き換えますobj

コード コンソール出力
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);

Collections.fill(list, 10);

for (int i: list)
   System.out.println(i);
10
10
10

Collections.nCopies(int n, T obj)方法

このメソッドは、要素のコピーnCopies()のリストを返します。返されたリストは不変であることに注意してください。つまり、変更することはできません。値を読み取るためにのみ使用できます。nobj

コード 説明
List<String> immutableList = Collections.nCopies(5, "Hello");

ArrayList<String> list = new ArrayList<String>(immutableList);

for(String s: list)
   System.out.println(s);
5 つのHello文字列の不変リストを作成する 変更可能なリスト
を作成しlist、リストの値を入力しますimmutableList

コンソール出力:
Hello
Hello
Hello
Hello
Hello

Collections.replaceAll (List<T> list, T oldValue, T newValue)方法

このメソッドは、に等しいコレクションreplaceAll()内のすべての要素を に置き換えます。listoldValuenewValue

コード コンソール出力
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);

Collections.replaceAll(list, 2, 20);

for (int i: list)
   System.out.println(i);
1
20
3

Collections.copy (List<T> dest, List<T> src)方法

このcopy()メソッドは、コレクションのすべての要素をコレクションsrcにコピーしますdest

destコレクションの開始時間がコレクションよりも長い場合src、コレクションの残りの要素はdestそのまま残ります。

重要:
コレクションdestは少なくともsrcコレクションと同じ長さである必要があります (そうでない場合は がIndexOutOfBoundsExceptionスローされます)。
コード コンソール出力
ArrayList<Integer> srcList = new ArrayList<Integer>();
Collections.addAll(srcList, 99, 98, 97);

ArrayList<Integer> destList = new ArrayList<Integer>();
Collections.addAll(destList, 1, 2, 3, 4, 5, 6, 7);

Collections.copy(destList, srcList);

for (int i: destList)
   System.out.println(i);
99
98
97
4
5
6
7


3. 要素の順序

Collections.reverse(List<T> list)方法

このreverse()メソッドは、渡されたリストの要素の順序を逆にします。

コード コンソール出力
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 1, 2, 3, 4, 5);

Collections.reverse(list);

for (int i: list)
   System.out.println(i);
5
4
3
2
1

Collections.sort(List<T> list)方法

このsort()メソッドは、渡されたリストを昇順に並べ替えます。

コード コンソール出力
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 11, 2, 23, 4, 15);

Collections.sort(list);

for (int i: list)
   System.out.println(i);
2
4
11
15
23

Collections.rotate(List<T> list, int distance)方法

このrotate()メソッドは、渡されたリストの要素をdistance前方の位置だけ循環的にシフトします。

コード コンソール出力
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 1, 2, 3, 4, 5, 6, 7, 8, 9);

Collections.rotate(list, 3); // Shift by 3 positions

for (int i: list)
   System.out.println(i);
7
8
9
1
2
3
4
5
6

Collections.shuffle(List<T> list)方法

このshuffle()メソッドは、渡されたリストのすべての要素をランダムにシャッフルします。結果は毎回異なります。

コード コンソール出力
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 1, 2, 3, 4, 5);

Collections.shuffle(list); // Shuffle the elements

for (int i: list)
   System.out.println(i);
5
2
4
3
1


4. コレクション内の要素の検索

Collections.min(Collection<T> colls)方法

このmin()メソッドは、コレクション内の最小の要素を返します。

コード コンソール出力
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 11, 2, 23, 4, 15);

int min = Collections.min(list);

System.out.println(min);
2

Collections.max(Collection<T> colls)方法

このmax()メソッドは、コレクション内の最大の要素を返します。

コード コンソール出力
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 11, 2, 23, 4, 15);

int max = Collections.max(list);

System.out.println(max);
23

Collections.frequency(Collection<T> colls, T obj)方法

このメソッドは、コレクション内で要素が出現するfrequency()回数をカウントします。objcolls

コード コンソール出力
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 11, 2, 23, 4, 15, 4, 2, 4);

int count = Collections.frequency(list, 4);

System.out.println(count);
3

Collections.binarySearch(Collection<T> colls, T obj)方法

このメソッドはコレクション内の要素binarySearch()を検索します。見つかった要素のインデックスを返します。要素が見つからない場合は負の数を返します。objcolls

重要:
メソッドを呼び出す前にbinarySearch()、コレクションを並べ替える必要があります ( を使用Collections.sort())。
コード コンソール出力
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 11, 2, 23, 5, 15, 4, 2, 4);

Collections.sort(list);  // 2, 2, 4, 4, 5, 11, 15, 23

int index = Collections.binarySearch(list, 5);    // 4
System.out.println(index);

int index2 = Collections.binarySearch(list, 15);  // 6
System.out.println(index2);

int index3 = Collections.binarySearch(list, 16); // The element doesn't exist
System.out.println(index3);
4
6
-8

Collections.disjoint(Collection<T> coll1, Collection<T> coll2)方法

このメソッドは、渡されたコレクションに共通の要素がない場合にdisjoint()戻ります。true

コード コンソール出力
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 1, 2, 3, 4, 5, 6, 7);

ArrayList<Integer> list2 = new ArrayList<Integer>();
Collections.addAll(list2, 99, 98, 97);

boolean isDifferent = Collections.disjoint(list, list2);
System.out.println(isDifferent);
true