言語
日本語
English

Caution

お使いのブラウザはJavaScriptが無効になっております。
当サイトでは検索などの処理にJavaScriptを使用しています。
より快適にご利用頂くため、JavaScriptを有効にしたうえで当サイトを閲覧することをお勧めいたします。

Java辞典

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

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

対応: Java 1.2(1998)

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)コレクション内の最大要素を返します。

サンプルコード

sample_CollectionsSortShuffle.java
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;

class CollectionsSortShuffle {
    public static void main(String[] args) {
        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> names = new ArrayList<>(Arrays.asList("常守朱", "宜野座伸元", "狡噛慎也"));
        Collections.sort(names, (a, b) -> a.length() - b.length());
        System.out.println(names); // 『[常守朱, 狡噛慎也, 宜野座伸元]』と出力されます。

        // 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』と出力されます。
    }
}
CollectionsSortShuffle.java
javac CollectionsSortShuffle.java
java CollectionsSortShuffle
[1, 1, 2, 3, 4, 5, 6, 9]
[9, 6, 5, 4, 3, 2, 1, 1]
[常守朱, 狡噛慎也, 宜野座伸元]
[5, 4, 2, 9, 1, 1, 3, 6]
[d, c, b, a]
61
95

※ shuffle() の結果はランダムなため、実行のたびに異なる順序で出力されます。

概要

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

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

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

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