为了账号安全,请及时绑定邮箱和手机立即绑定

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


正在回答

1 回答

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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信