package?com.imooc.collection;
import?java.util.ArrayList;
import?java.util.Collections;
import?java.util.List;
import?java.util.Random;
/**
?*?創建一個String泛型的List,往其中添加十條隨機字符串,排序后打印輸出
?*?每條字符串的長度為10以內的隨機整數
?*?每條字符串的每個字符都為隨機生成的字符,字符可以重復
?*?每條隨機字符串不可重復
?*/
public?class?CollectionsSortExercise?{
/**
?*?獲取一個隨機字符串,字符串長度為10以內的隨機整數
?*/
public?static?String?getRandomString(int?length)?{
//?定義一個基字符串base,用于從其中生成隨機字符串
String?base?=?"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
StringBuilder?sb?=?new?StringBuilder();
Random?random?=?new?Random();
//?定義一個字符串長度的變量finalLength,其值為[1,10]間的隨機值
int?finalLength?=?random.nextInt(length)?+?1;
//?生成一個字符串對象sb
for?(int?i?=?0;?i?<?finalLength;?i++)?{
int?index?=?random.nextInt(base.length());
sb.append(base.charAt(index));
}
return?sb.toString();
}
/**
?*?創建一個String泛型的List,往其中添加獲取的十條隨機字符串,排序后打印輸出
?*/
public?void?testSort()?{
List<String>?stringList?=?new?ArrayList<String>();
for?(int?i?=?0;?i?<?10;?i++)?{
String?string;
do?{
string?=?getRandomString(10);
}?while?(stringList.contains(string));
stringList.add(string);
System.out.println("成功添加一條隨機字符串:"?+?string);
}
System.out.println("--------------排序前--------------");
for?(String?string?:?stringList)?{
System.out.println("字符串:"?+?string);
}
Collections.sort(stringList);
System.out.println("--------------排序后--------------");
for?(String?string?:?stringList)?{
System.out.println("字符串:"?+?string);
}
}
public?static?void?main(String[]?args)?{
//?TODO?Auto-generated?method?stub
CollectionsSortExercise?cse?=?new?CollectionsSortExercise();
cse.testSort();
}
}
2015-08-14
知道了,謝謝
2015-08-05
樓主,求指點!
我認為應該把你的代碼int?finalLength?=?random.nextInt(length)?+?1; 改為int?finalLength?=?random.nextInt(10)?+?1;把傳進來的int?length刪掉,還有把testSort()方法中的代碼string?=?getRandomString(10);中的10去掉。
這樣做會不會好點。。。。還有我不懂這兩種的區別?求指點!謝謝!
2015-06-19
感謝樓主分享!