Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaでリストをシャッフル(ランダムに並べ替え)する方法

Javaでリストの要素をランダムに並べ替えたい場合は、java.util.Collectionsクラスが提供するshuffle()メソッドを使うのが最も簡単です。このメソッドは、指定されたリストの要素順序をデフォルトの乱数発生元を使用してランダムにシャッフルします。

サンプルコード

import java.util.*;
public class Demo{
    public static void main(String[] args){
        ArrayList<String> my_list = new ArrayList<String>();
        my_list.add("Hello");
        my_list.add(",");
        my_list.add("this");
        my_list.add("is");
        my_list.add("a");
        my_list.add("sample");
        System.out.println("シャッフル前のリスト : \n" + my_list);
        Collections.shuffle(my_list);
        System.out.println("\n シャッフル後のリスト : \n" + my_list);
    }
}

実行結果

シャッフル前のリスト :
[Hello, ,, this, is, a, sample]
 シャッフル後のリスト :
[a, is, ,, Hello, this, sample]

コードの解説

まず、Demoという名前のクラス内にmain関数を定義しています。その中で文字列型のArrayListを作成し、add()メソッドを使って複数の要素を追加します。

次に、シャッフル前のリストの内容を画面に出力し、Collections.shuffle()メソッドを呼び出してリストの要素順序をランダムに入れ替えます。最後に、シャッフル後のリストを出力することで、要素の並び順が実行ごとに変わることを確認できます。

補足:シード値を指定したシャッフル

shuffle()メソッドは、乱数生成器としてRandomオブジェクトを受け取るオーバーロード版も用意されています。シード値を固定すれば、同じシャッフル結果を再現できるため、テストやデバッグの際に便利です。

Collections.shuffle(my_list, new Random(42)); // シード値42で再現可能なシャッフル
  1. JavaでArrayListから重複要素を削除する方法【SetとStream API】

    この記事では、JavaのArrayListから重複する要素を削除する方法を、具体的なコード例とともにわかりやすく解説します。代表的な2つのアプローチを紹介するので、目的や使用しているJavaのバージョンに応じて使い分けてください。 ArrayListから重複する文字列を削除する Setインターフェースには「重複した要素を保持できない」という特性があります。この特性を利用して、重複を含むArrayListを引数としてSetオブジェクトを生成すれば、手軽に重複を除去できます。 ポイントはLinkedHashSetを使うことです。通常のHashSetではなくLinkedHashSetを採用することで

  2. JavaでList(リスト)を配列に変換する方法|toArray()とArrays.asList()の使い方

    Javaの開発において、List(リスト)と配列(Array)の相互変換は非常によく使われる基本的な操作です。 Listを配列に変換する最も簡単かつ推奨される方法は、.toArray()メソッドを使うことです。逆に、配列をListに戻したい場合は、Arrays.asList()メソッドを使用します。 以下では、文字列(String)のListや整数(Integer)のListを、それぞれ対応する配列に変換する具体例を紹介します。 String型のListを配列に変換する import java.util.ArrayList; import java.util.List; public cl