看了Haki_TripleSword和zczhangcong1992兩位同學的代碼進行仿寫,發現還是ASCII查找執行效率高
因為沒有思路,看了Haki_TripleSword和zczhangcong1992兩位同學的代碼進行仿寫,發現還是ASCII查找執行效率高。
另外,兩位同學都想到了,通過多次調用random.nextInt()來控制字符串長度及所選用字符,以及用StringBuilder追加字符,我在這里缺乏想象力,要多多學習。
我改寫的方法如下:
/**
* 3.對String泛型的List進行排序
* 創建一個String泛型的List,添加十條隨機的String元素
* 每條字符串的長度為10以內的隨機整數
* 每條字符串的每個字符都為隨機生成的字符,字符可以重復
* 每條隨機字符串不可重復
* 調用Collections.sort()方法對其進行排序,再次輸出排序后順序
*/
public void testSort3(){
long startTime = System.nanoTime(); ?
List<String> stringList = new ArrayList<String>();
String base = "abcdefghijklmnopqrstuvwzyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
Random random = new Random();
StringBuilder sb = new StringBuilder();
String str=new String();
//循環添加10條隨機字符串
for(int i = 0;i<10;i++){
do{
//清空str
sb.delete(0, sb.length());
//限制字符串長度為1~9
for(int j =0;j<random.nextInt(9)+1;j++)
{
//從base中隨機取字符添加到字符串
sb.append(base.charAt(random.nextInt(62)));
}
str=sb.toString();
}while(stringList.contains(str));
stringList.add(str);
System.out.println("在List中成功添加了字符串:"+str);
}
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);
}
long endTime = System.nanoTime(); ?
? ? ? ? System.out.println("在String base中取數添加耗費時間: " + (endTime - startTime));?
}
發現這種方法執行,需要時間為
在String base中取數添加耗費時間: 3359954
而Haki_TripleSword同學的方法需要時間少一大半:
用ASCII碼和swtich語句取數添加耗費時間: 1397452
2015-12-23
你真的很認真,非常不錯。