【Java】shuffleでリストの要素の順序をランダムに入れ替える!

マップ(Map)のマッピングをコピーするにはCollectionsクラスのshuffleメソッドを使用します。

Collectionsクラスのshuffleメソッドはリストの要素の順序をランダムに並び替えるメソッドとなります。
shuffleメソッドのパラメータにリストを指定することで指定したリストの要素をランダムに入れ替えます。

しかし、新しいリストをランダムに入れ替えるのではなく、既存のリストを入れ替えます。
その為、バックアップは取れませんので注意してください。

今回はCollectionsクラスのshuffleメソッドを使って以下の場合でリストの要素の順序をランダムに入れ替えていきます。

⚫︎ リストに要素が含まれている状態でリストの要素の順序をランダムに入れ替える場合
⚫︎ リストに要素が含まれていない状態でリストの要素の順序をランダムに入れ替える場合
⚫︎ 多次元リストの要素の順序をランダムに入れ替える場合

shuffleメソッドとは

Collectionsクラスのshuffleメソッドはリストの要素の順序をランダムに並び替えるメソッドとなります。

shuffleメソッドの書き方

putAllメソッドの構文は下記となります。

パラメータ

⚫︎ リスト:
要素の順番をランダムに入れ替えたいリストを指定します

shuffleの()にリストを指定し、メソッドを呼び出すことで()に指定したリストの要素の順番をランダムに入れ替えます。

shuffleメソッドの注意点

shuffleは新しいリストをランダムに入れ替えるのではなく、既存のリスト内の要素の順番を入れ替えます。
既存リストのバックアップは取れませんので注意してください。

リストの要素の順序をランダムに入れ替えるサンプルコード

リストの要素の順序をランダムに入れ替えるサンプルコードを紹介します。

リストに要素が含まれている場合

出力結果

・実行前
[テレビ, 冷蔵庫, 洗濯機, 電子レンジ, 炊飯器, 掃除機]

・実行後
[炊飯器, テレビ, 電子レンジ, 掃除機, 洗濯機, 冷蔵庫]

shuffleメソッドによってlist1の要素の順序がランダムに入れ替えられます。

リストに要素が含まれていない場合

出力結果

・実行前
[]

・実行後
[]

リストに要素が含まれていない場合は空のリストを返します。

多次元リストの要素の順序をランダムに入れ替えるサンプルコード

二次元リストの要素の順序をランダムに入れ替える場合

出力結果

・ 実行前
[[0, 1, 2], [1, 2, 3], [2, 3, 4]]

・ 実行後
[[2, 3, 4], [0, 1, 2], [1, 2, 3]]

shuffleメソッドによって二次元リストの要素の順番がランダムに入れ替えられています。

三次元リストの要素の順序をランダムに入れ替える場合

出力結果

・ 実行前
[[[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は新しいリストをランダムに入れ替えるのではなく、既存のリスト内の要素の順番を入れ替える為、既存リストのバックアップは取れない

⚫︎ リストの要素が空の場合は空のリストのまま返す

Writer
壷井

壷井

株式会社flyhawkの壷井です。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。

最新の案件情報

フリーランスエンジニアの案件探し