コレクションの要素をランダムでシャッフルするには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
に配列の中身を取り出す必要があるので注意しましょう。以上で記事を終わりにします。