String 字符串遍歷
public void testsort2() {
?? List<String>? string =new ArrayList<String>();
?? string.add("woshibaoqiang");
?? string.add("woshizhenzhenzhen");
?? string.add("woshibaoqiangdebaba");
?? System.out.println("----------------排序前");
?? for(String string1:string) {
??? System.out.println(string);
?? }
?? System.out.println("-------------排序后");
?? Collections.shuffle(string);
?? for(String string1:string) {
??? System.out.println(string);
?? }
? }
為什么輸出System.out.println(string);時是
[woshizhenzhenzhen, woshibaoqiangdebaba, woshibaoqiang]
[woshizhenzhenzhen, woshibaoqiangdebaba, woshibaoqiang]
[woshizhenzhenzhen, woshibaoqiangdebaba, woshibaoqiang]
這個結果呢???
我想的string是一個list的集合,那為什么會遍歷三次呢???
是它的長度為3嗎???? 他怎么知道它的長度為3呢??
2018-11-02
System.out.println(string1);要這樣寫,你輸出的是string,string是list。要輸出每個元素,你自己定義的是String string1
2018-11-03
? Collections.shuffle(string);你用個隨機排序的,官方解釋:??
使用默認的隨機源隨機排列指定的列表。?所有排列都以大致相等的可能性發生。
在前面的描述中使用了“大約”對沖,因為默認的隨機源僅僅是獨立選擇的比特的無偏差源。?如果它是隨機選擇位的完美來源,則算法將選擇具有完美均勻性的排列。
該實現從最后一個元素向后移動列表,重復地將隨機選擇的元素交換到“當前位置”中。?從從第一個元素運行到當前位置(包括)的列表的部分中隨機選擇元素。
該方法運行在線性時間。?如果指定的列表沒有實現
RandomAccess
接口并且很大,則此實現將混合之前將指定的列表轉儲到數組中,并將該混洗的數組轉儲回列表中。?這避免了將“順序訪問”列表進行混洗所產生的二次行為。