Collection.shuffle()方法例解析


本論文では主にCollection.shuffleの方法に関する内容を検討します。具体的な内容を見てみます。
Java.util.coollections類には静的なshuffle()の方法があります。
1)static void shuffle(List<?>リストはデフォルトのランダムソースを使って置換します。すべての置換が発生する可能性はほぼ等しいです。
2)static void shuffle(List<?>list,Random Rand)は指定されたランダムソースを用いて指定リストを置換し,すべての置換が発生する可能性はほぼ等しく,ランダムソースが公平であると仮定した。
分かりやすく言えば、シャッフルのようにランダムに元の順番を狂わせます。
注意:配列が与えられている場合、Arays.asList()の方法で1つのクラスターに変換するには、2つの方法があります。
1)List<Integer>list=ArayList(Arays.asList(ia))を使って、shuffleでシャッフルしても、下の配列の順番は変わりません。
2)List<Integer>list=Arays.aslist(ia)を使ってシャッフルをすると、下の配列の順番が変わります。コードの例は以下の通りです。

package ahu;
import java.util.*;
public class Modify {
	public static void main(String[] args){
		Random rand=new Random(47);
		Integer[] ia={0,1,2,3,4,5,6,7,8,9};
		List<Integer> list=new ArrayList<Integer>(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<Integer> 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] 
第1の場合、Arays.asList()の出力は、ArayList()のコンストラクタに伝達され、これは、アーリアを参照する要素のArayListを作成するので、これらの参照を撹乱することは、配列を変更することはない。しかし、Arays.asList(ia)をそのまま使うと、このシャッフルはアジアの順序を変更します。Arays.asList()が生成することを認識したListオブジェクトは、その物理的実現のために、最下の配列を使用することが重要である。このListはあなたが実行する操作で修正され、元の配列が変更されたくないなら、別の容器にコピーを作成するべきです。
締め括りをつける
以上が、本論文ではCollection.shuffleの方法の実例解析のすべての内容であり、皆様のために役に立つことを願っています。興味のある方は引き続き当駅の他のテーマを参照してください。友達のサポートに感謝します。