【Java】shuffleでリストの要素の順序をランダムに入れ替える!
マップ(Map)のマッピングをコピーするにはCollectionsクラスのshuffleメソッドを使用します。
Collectionsクラスのshuffleメソッドはリストの要素の順序をランダムに並び替えるメソッドとなります。
shuffleメソッドのパラメータにリストを指定することで指定したリストの要素をランダムに入れ替えます。
しかし、新しいリストをランダムに入れ替えるのではなく、既存のリストを入れ替えます。
その為、バックアップは取れませんので注意してください。
今回はCollectionsクラスのshuffleメソッドを使って以下の場合でリストの要素の順序をランダムに入れ替えていきます。
⚫︎ リストに要素が含まれている状態でリストの要素の順序をランダムに入れ替える場合
⚫︎ リストに要素が含まれていない状態でリストの要素の順序をランダムに入れ替える場合
⚫︎ 多次元リストの要素の順序をランダムに入れ替える場合
目次
shuffleメソッドとは
Collectionsクラスのshuffleメソッドはリストの要素の順序をランダムに並び替えるメソッドとなります。
shuffleメソッドの書き方
putAllメソッドの構文は下記となります。
1 2 3 |
import java.util.Collections; Collectons.shuffle(リスト) |
パラメータ
⚫︎ リスト:
要素の順番をランダムに入れ替えたいリストを指定します
shuffleの()にリストを指定し、メソッドを呼び出すことで()に指定したリストの要素の順番をランダムに入れ替えます。
shuffleメソッドの注意点
shuffleは新しいリストをランダムに入れ替えるのではなく、既存のリスト内の要素の順番を入れ替えます。
既存リストのバックアップは取れませんので注意してください。
リストの要素の順序をランダムに入れ替えるサンプルコード
リストの要素の順序をランダムに入れ替えるサンプルコードを紹介します。
リストに要素が含まれている場合
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
/// リストの要素の順序をランダムに入れ替える import java.util.ArrayList; import java.util.Collections; import java.util.List; public class Main { public static void main(String[] args) throws Exception { // リストを作成 List<String> list1 = new ArrayList<String>(); // リストに要素を追加する list1.add("テレビ"); list1.add("冷蔵庫"); list1.add("洗濯機"); list1.add("電子レンジ"); list1.add("炊飯器"); list1.add("掃除機"); System.out.println("・実行前"); System.out.println(list1); // リストの要素の順番をランダムに入れ替える Collections.shuffle(list1); System.out.println("・実行後"); System.out.println(list1); } } |
出力結果
・実行前
[テレビ, 冷蔵庫, 洗濯機, 電子レンジ, 炊飯器, 掃除機]
・実行後
[炊飯器, テレビ, 電子レンジ, 掃除機, 洗濯機, 冷蔵庫]
shuffleメソッドによってlist1の要素の順序がランダムに入れ替えられます。
リストに要素が含まれていない場合
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
// リストの要素の順序をランダムに入れ替える import java.util.ArrayList; import java.util.Collections; import java.util.List; public class Main { public static void main(String[] args) throws Exception { // リストを作成 List<String> list1 = new ArrayList<String>(); System.out.println("・実行前"); System.out.println(list1); // リストの要素の順番をランダムに入れ替える Collections.shuffle(list1); System.out.println("・実行後"); System.out.println(list1); } } |
出力結果
・実行前
[]
・実行後
[]
リストに要素が含まれていない場合は空のリストを返します。
多次元リストの要素の順序をランダムに入れ替えるサンプルコード
二次元リストの要素の順序をランダムに入れ替える場合
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
// リストの要素の順序をランダムに入れ替える import java.util.ArrayList; import java.util.Collections; import java.util.List; public class Main { public static void main(String[] args) throws Exception { // リストを作成 List<List<Integer>> list2 = new ArrayList<List<Integer>>(); for(int j = 0; j < 3; j++){ //リストの中身を生成(一時元) list2.add(new ArrayList<Integer>()); for(int k= 0; k < 3; k++) { list2.get(j).add(j + k); } } System.out.println("・ 実行前"); System.out.println(list2); Collections.shuffle(list2); System.out.println("・ 実行後"); System.out.println(list2); } } |
出力結果
・ 実行前
[[0, 1, 2], [1, 2, 3], [2, 3, 4]]
・ 実行後
[[2, 3, 4], [0, 1, 2], [1, 2, 3]]
shuffleメソッドによって二次元リストの要素の順番がランダムに入れ替えられています。
三次元リストの要素の順序をランダムに入れ替える場合
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
import java.util.ArrayList; import java.util.Collections; import java.util.List; public class Main { public static void main(String[] args) throws Exception { //三次元リストの生成 List<List<List<Integer>>> list3 = new ArrayList<List<List<Integer>>>(); for(int i = 0;i < 3; i++){ //リストの中身を生成(二次元) list3.add(new ArrayList<List<Integer>>()); for(int j = 0; j < 3; j++){ //リストの中身を生成(一次元) list3.get(i).add(new ArrayList<Integer>()); for(int k= 0; k < 3; k++){ list3.get(i).get(j).add(i + j + k); } } } System.out.println("・ 実行前"); System.out.println(list3); Collections.shuffle(list3); System.out.println("・ 実行後"); System.out.println(list3); } } |
出力結果
・ 実行前
[[[0, 1, 2], [1, 2, 3], [2, 3, 4]], [[1, 2, 3], [2, 3, 4], [3, 4, 5]], [[2, 3, 4], [3, 4, 5], [4, 5, 6]]]
・ 実行後
[[[1, 2, 3], [2, 3, 4], [3, 4, 5]], [[0, 1, 2], [1, 2, 3], [2, 3, 4]], [[2, 3, 4], [3, 4, 5], [4, 5, 6]]]
shuffleメソッドによって三次元リストの要素の順番がランダムに入れ替えられています。
今回のポイント
Collections.shuffleでリストの要素の順序をランダムに入れ替える
リストの要素の順序をランダムに入れ替えにはCollectionsクラスのshuffleメソッドを使用する
⚫︎ Collectionsクラスのshuffleメソッドでリストの要素の順序をランダムに入れ替える
⚫︎ shuffleメソッドのパラメータにランダムに入れ替えたいリストを指定し、メソッドを呼び出すことでパラメータのリストの要素の順番がランダムに入れ替えられる
⚫︎ shuffleは新しいリストをランダムに入れ替えるのではなく、既存のリスト内の要素の順番を入れ替える為、既存リストのバックアップは取れない
⚫︎ リストの要素が空の場合は空のリストのまま返す
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。