Collections.shuffle()リストを乱す


Java.util.Collectionsクラスには、次のような静的shuffle()メソッドがあります.
1)static void shuffle(List>list)はデフォルトのランダムソースを使用してリストを置換し、すべての置換が発生する可能性はほぼ等しい.
2)static void shuffle(List>list,Random rand)は,指定されたランダムソースを用いて指定リストを置換し,すべての置換が発生する可能性はほぼ等しく,ランダムソースが公平であると仮定した.
 
注意:整数配列が与えられた場合、Arraysを使用します.asList()メソッドは、2つの方法で1つの集合クラスに変換されます.
1)リストリスト=ArrayList(Arrays.asList(ia))を用い,shuffle()を用いて下位配列の順序を乱すことはない.
2)List list=Arraysを用いる.aslist(ia)を使用し、shuffle()で乱すと、下位配列の順序が変わります.
 
        Random rand=new Random(47);
		Integer[] ia={0,1,2,3,4,5,6,7,8,9};
		List list=new ArrayList(Arrays.asList(ia));
		System.out.println("Before shufflig: "+list);
		Collections.shuffle(list,rand);
		System.out.println("After shuffling: "+list);
		System.out.println("array: "+Arrays.toString(ia));
		List list1=Arrays.asList(ia);
		System.out.println("Before shuffling: "+list1);
		Collections.shuffle(list1,rand);
		System.out.println("After shuffling: "+list1);
		System.out.println("array: "+Arrays.toString(ia));


      :
Before shufflig: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
After shuffling: [3, 5, 2, 0, 7, 6, 1, 4, 9, 8]
array: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Before shuffling: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
After shuffling: [8, 0, 5, 2, 6, 1, 4, 9, 3, 7]
array: [8, 0, 5, 2, 6, 1, 4, 9, 3, 7]

参考サイト:https://blog.csdn.net/u011514810/article/details/51218784