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

课后练习,大神帮忙看下还需要怎么优化一下

package com.imooc_collection;


import java.util.ArrayList;

import java.util.Collections;

import java.util.Iterator;

import java.util.LinkedList;

import java.util.List;

import java.util.Random;

/*

 * 利用Colletions.sort()方法对泛型为String类型的list进行排序版本2:

 * 1、创建List<String>之后,往其中添加十条随机字符串 2、每条字符串的长度为10以内的随机整数

 * 3、每条字符串的每个字符都为随机生成的字符,字符可以重复 4、每条随机字符串不可以重复

 */


public class testSort2 {

private Random random;

private List<String> list;


public testSort2() {

// TODO 自动生成的构造函数存根

random = new Random();

list = new LinkedList<>();

}


// 随机生成字符串方法

public String randomAddString() {

String keySet = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

int keyLength = random.nextInt(10);

StringBuffer sbf = new StringBuffer();

for (int i = 0; i <= keyLength; i++) {

int number = random.nextInt(keySet.length());

sbf.append(keySet.charAt(number));

}

return sbf.toString();

}


// 往List中添加随机字符串

public void addList() {

for (int i = 0; i < 10; i++) {

String addStr;

do {

addStr = randomAddString();

} while (list.contains(addStr));

list.add(addStr);

}

System.out.println("——————排序前——————");

Iterator<String> it = list.iterator();

while (it.hasNext()) {

System.out.println("List集合中元素有:\'" + it.next()+"\'");

}

System.out.println("——————排序后——————");

Collections.sort(list);

for (String integer2 : list) {

System.out.println("元素\'" + integer2+"\'");

}

}


public static void main(String[] args) {

testSort2 ts = new testSort2();

ts.addList();

}


}


正在回答

2 回答

看一个StringBuffer,优先使用StringBuilder线程不安全性能略高

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

我也是新手,看了你的代码后!1、可以这样来优化

for(){  //控制生成10条字符串

do{

for(){  //控制生成长度10以内的字符串

}

}while();

}

2、你代码里这地方有点小问题,

baint number = random.nextInt(keySet.length()-1);才对

个人意见哈

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

清水J

nextInt()方法随机生成的int值不包含指定值的;用KeySet.length()-1反而会导致最后一个字符永远取不到。
2018-02-06 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

课后练习,大神帮忙看下还需要怎么优化一下

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