【Java】リストや配列の並び(順番)をランダムにする方法

java

リストや配列の並びをランダムにして、値を抽出する方法を紹介します。

リストから重複しないランダムな値を取得するには、今回紹介する方法が適しています。

[スポンサーリンク]

目次

  1. リストの並びをランダムにする方法
  2. 配列の並びをランダムにする方法

リストの並びをランダムにする

    /**
     * リストの並びをランダムにするプログラム
     */
    public static void main(String[] args) throws Exception {
        List<String> list = new ArrayList<String>();
        list.add("test1");
        list.add("test2");
        list.add("test3");

        // リストの並びをシャッフルします。
        Collections.shuffle(list);
        
        // シャッフルされたリストの先頭を取得します。
        String result = list.get(0);
        
        System.out.println("シャッフルされたリストの先頭 : " + result);
    }

実行結果

>実行結果
シャッフルされたリストの先頭 : test3

配列の並びをランダムにする方法

配列からリストへ変換して、並ぶをランダムにします。

    /**
     * 配列の並びをランダムにするプログラム
     */
    public static void main(String[] args) throws Exception {
        String[] array = {"test1", "test2", "test3"};

        // 配列からListへ変換します。
        List<String> list=Arrays.asList(array);
        
        // リストの並びをシャッフルします。
        Collections.shuffle(list);
        
        // listから配列へ戻します。
        String[] array2 =(String[])list.toArray(new String[list.size()]);
        
        // シャッフルされた配列の先頭を取得します。
        String result = array2[0];
        
        System.out.println("シャッフルされた配列の先頭 : " + result);
    }

実行結果

>実行結果
シャッフルされた配列の先頭 : test3

さいごに

リストや配列の並びをランダムにする方法は、業務系アプリではあまり見ることがありません。
ゲーム系アプリのくじ引きとかで、リストや配列の並びをランダムにして結果を返すような処理には有効な方法かと思います。
(もっとよいアルゴリズムがありのかもしれまんせんが。)

リストの並びをランダムにするのはCollections.shuffleです!お忘れなく!
それでは!