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);時(shí)是
[woshizhenzhenzhen, woshibaoqiangdebaba, woshibaoqiang]
[woshizhenzhenzhen, woshibaoqiangdebaba, woshibaoqiang]
[woshizhenzhenzhen, woshibaoqiangdebaba, woshibaoqiang]
這個(gè)結(jié)果呢???
我想的string是一個(gè)list的集合,那為什么會(huì)遍歷三次呢???
是它的長(zhǎng)度為3嗎???? 他怎么知道它的長(zhǎng)度為3呢??
2018-11-02
System.out.println(string1);要這樣寫,你輸出的是string,string是list。要輸出每個(gè)元素,你自己定義的是String string1
2018-11-03
? Collections.shuffle(string);你用個(gè)隨機(jī)排序的,官方解釋:??
使用默認(rèn)的隨機(jī)源隨機(jī)排列指定的列表。?所有排列都以大致相等的可能性發(fā)生。
在前面的描述中使用了“大約”對(duì)沖,因?yàn)槟J(rèn)的隨機(jī)源僅僅是獨(dú)立選擇的比特的無偏差源。?如果它是隨機(jī)選擇位的完美來源,則算法將選擇具有完美均勻性的排列。
該實(shí)現(xiàn)從最后一個(gè)元素向后移動(dòng)列表,重復(fù)地將隨機(jī)選擇的元素交換到“當(dāng)前位置”中。?從從第一個(gè)元素運(yùn)行到當(dāng)前位置(包括)的列表的部分中隨機(jī)選擇元素。
該方法運(yùn)行在線性時(shí)間。?如果指定的列表沒有實(shí)現(xiàn)
RandomAccess
接口并且很大,則此實(shí)現(xiàn)將混合之前將指定的列表轉(zhuǎn)儲(chǔ)到數(shù)組中,并將該混洗的數(shù)組轉(zhuǎn)儲(chǔ)回列表中。?這避免了將“順序訪問”列表進(jìn)行混洗所產(chǎn)生的二次行為。