Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

Java辞典

  1. トップページ
  2. Java辞典
  3. Collections.sort() / Collections.shuffle() / Collections.reverse()

Collections.sort() / Collections.shuffle() / Collections.reverse()

List を並べ替えたり、要素をランダムに並べ替えたり、順序を反転させたり、最小値・最大値を取得したりするためのユーティリティメソッドです。java.util.Collections クラスの静的メソッドとして提供されています。

構文
import java.util.Collections;

// リストを昇順に並べ替えます(破壊的操作)。
Collections.sort(List<T> list);
Collections.sort(List<T> list, Comparator<? super T> c);

// リストをランダムに並べ替えます(破壊的操作)。
Collections.shuffle(List<?> list);

// リストの要素を逆順にします(破壊的操作)。
Collections.reverse(List<?> list);

// リストの最小値・最大値を返します。
Collections.min(Collection<? extends T> coll);
Collections.max(Collection<? extends T> coll);
メソッド一覧
メソッド概要
Collections.sort(list)リストを自然順序(昇順)でインプレースに並べ替えます。要素は Comparable を実装している必要があります。
Collections.sort(list, comparator)Comparator を指定して任意の順序で並べ替えます。
Collections.shuffle(list)リストの要素をランダムに並べ替えます。ゲームのカードシャッフルなどに使われます。
Collections.reverse(list)リストの要素の順序を逆にします。
Collections.min(coll)コレクション内の最小要素を返します。要素は Comparable を実装している必要があります。
Collections.max(coll)コレクション内の最大要素を返します。
サンプルコード
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;

ArrayList<Integer> nums = new ArrayList<>(Arrays.asList(3, 1, 4, 1, 5, 9, 2, 6));

// sort() で昇順に並べ替えます。
Collections.sort(nums);
System.out.println(nums); // 『[1, 1, 2, 3, 4, 5, 6, 9]』と出力されます。

// Comparator で降順に並べ替えます。
Collections.sort(nums, Collections.reverseOrder());
System.out.println(nums); // 『[9, 6, 5, 4, 3, 2, 1, 1]』と出力されます。

// ラムダ式で長さ順に並べ替えます。
ArrayList<String> words = new ArrayList<>(Arrays.asList("banana", "fig", "apple"));
Collections.sort(words, (a, b) -> a.length() - b.length());
System.out.println(words); // 『[fig, apple, banana]』と出力されます。

// shuffle() でランダムに並べ替えます。
Collections.shuffle(nums);
System.out.println(nums); // ランダムな順序で出力されます。

// reverse() で逆順にします。
ArrayList<String> letters = new ArrayList<>(Arrays.asList("a", "b", "c", "d"));
Collections.reverse(letters);
System.out.println(letters); // 『[d, c, b, a]』と出力されます。

// min() と max() で最小・最大値を取得します。
ArrayList<Integer> scores = new ArrayList<>(Arrays.asList(85, 92, 78, 95, 61));
System.out.println(Collections.min(scores)); // 『61』と出力されます。
System.out.println(Collections.max(scores)); // 『95』と出力されます。
概要

『Collections.sort()』はJava 8以降では list.sort(comparator) のように List のインスタンスメソッドとして呼び出すこともできます。内部的にはTimSortアルゴリズムを使用しており、安定ソート(同じ値の要素の順序が保持される)です。

これらのメソッドは元のリストを直接変更する破壊的操作です。元の順序を保持したい場合は事前に new ArrayList<>(original) などでコピーを作成してから操作してください。

リストの要素の追加・取得には『add() / get()』、マップの操作には『HashMap の put() / get()』を使用してください。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。