Javaで配列をシャッフルする方法はどうですか?
Javaで配列をシャッフルする方法は2つあります。
-
- Collections.shuffle() メソッド
- Random クラス
1. コレクションクラスを使用して配列の要素をシャッフルする。
配列からリストを作成し、それからCollectionsクラスのshuffle()メソッドを使って要素をシャッフルすることができます。その後、リストを元の配列に変換します。
package com.scdev.examples;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class ShuffleArray {
public static void main(String[] args) {
Integer[] intArray = { 1, 2, 3, 4, 5, 6, 7 };
List<Integer> intList = Arrays.asList(intArray);
Collections.shuffle(intList);
intList.toArray(intArray);
System.out.println(Arrays.toString(intArray));
}
}
出力:[1、7、5、2、3、6、4] Arrays.asList()はオブジェクトの配列でのみ機能します。オートボクシングのコンセプトはジェネリクスでは機能しませんので、プリミティブな配列をシャッフルするためにこの方法を使用することはできません。
ランダムクラスを使用して配列をシャッフルする。
私たちはforループを使用して、配列の要素を反復処理することができます。次に、Randomクラスを使用してランダムなインデックス番号を生成します。その後、現在のインデックス要素とランダムに生成されたインデックス要素を入れ替えます。forループの最後には、ランダムにシャッフルされた配列が得られます。
package com.scdev.examples;
import java.util.Arrays;
import java.util.Random;
public class ShuffleArray {
public static void main(String[] args) {
int[] array = { 1, 2, 3, 4, 5, 6, 7 };
Random rand = new Random();
for (int i = 0; i < array.length; i++) {
int randomIndexToSwap = rand.nextInt(array.length);
int temp = array[randomIndexToSwap];
array[randomIndexToSwap] = array[i];
array[i] = temp;
}
System.out.println(Arrays.toString(array));
}
}
出力:[2、4、5、1、7、3、6]