【Java】shuffleメソッドでコレクションをシャッフルする方法

【Java】shuffleメソッドでコレクションをシャッフルする方法プログラミングの知識
プログラミングの知識

コレクションの要素をランダムでシャッフルするにはCollectionsクラスshuffleメソッドが便利です。ランダムで重複しない値を表示することに使ったりできます。

この記事ではshuffleメソッドについてまとめていきます。

この記事に書いてあること
  • shuffleメソッドについて
  • メソッドの使用例
スポンサーリンク

shuffleメソッドとは

shuffleメソッドとは、リスト(List)をシャッフルするためのメソッドです。

メソッドは下の様に記述します。

/*shuffleメソッドの書式例*/
Collections.shuffle(リスト);

ランダムに数字を出力したい場合にはRandomクラスがあります。こちらは数字の範囲を指定してランダムに出力させることができますが、重複する可能性があります。

対してshuffleメソッドListで指定した数字を1つずつ使った重複しないリストを簡単に作ることができます。また、文字列等もシャッフルすることが可能です。

shuffleメソッドで数字をシャッフルする

試しにArrayListを使って1から10が格納されたlistを作りシャッフルしてみます。ArrayListはコレクションの中にあるListインターフェイスを実装したクラスになります。

サンプルコードと出力結果

サンプルコードを以下に示します。

package bg;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class ShuffleTest {

    public static void main(String[] args) {
        
        //ArrayListであるlistを宣言する
        List<Integer> list = new ArrayList<Integer>();

        //listに1~10を順番に格納
        for (int i = 1; i <= 10; i++) {
            list.add(i);
        }

        //listをそのまま表示する
        System.out.println(list);

        //listをシャッフルする
        Collections.shuffle(list);

        //シャッフルしたlistを表示する
        System.out.println(list);
    }
}

出力結果は以下の様になります。(ランダム性があるので一例です)

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[4, 3, 6, 1, 7, 8, 5, 9, 2, 10]

shuffleメソッドで文字列をシャッフルする

先ほどは数値型のリストをシャッフルしてみました。今度は文字列の配列をシャッフルしてみます。

サンプルコードと出力結果

サンプルコードを以下に示します。

package bg;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class ShuffleStringTest {

    public static void main(String[] args) {

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

        //listにone,two,three,four,fiveの文字列を格納
        list.add("one");
        list.add("two");
        list.add("three");
        list.add("four");
        list.add("five");

        System.out.println(list);

        //シャッフルしたlistを表示する
        Collections.shuffle(list);
        System.out.println(list);
    }

}

出力結果は以下の様になります。(ランダム性があるので一例です)

[one, two, three, four, five]
[three, four, one, two, five]

先ほどと同様に、1行目のリストの順番が2行目でシャッフルされています。

まとめ

以上がshuffleメソッドの使い方になります。

ポイント
  • 要素をシャッフルするにはshuffleメソッドが便利
  • shuffleメソッドで整数も文字列もシャッフルできる

なお、配列にはshuffleメソッドが使えません。

既に配列の中に入っている要素をシャッフルするには、一端ArrayListに配列の中身を取り出す必要があるので注意しましょう。以上で記事を終わりにします。

スポンサーリンク
Dim雑記
タイトルとURLをコピーしました