看了Haki_TripleSword和zczhangcong1992两位同学的代码进行仿写,发现还是ASCII查找执行效率高

来源:6-5 应用 Collections.sort() 实现 List 排序

TTKatrina

2015-09-20 18:56

因为没有思路,看了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


写回答 关注

1回答

  • 神奇的大叔
    2015-12-23 23:56:51

    你真的很认真,非常不错。

Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409784 学习 · 4339 问题

查看课程

相似问题