看了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