/**
* 3.对String泛型的List进行排序
* 创建String泛型的Lits,添加十个乱序的String元素
* 每条字符串的长度为10以内的随即整数
* 每条字符串的每个字符都为随即生成的字符,字符可以重复
* 每条随即字符串不可重复
* 调用sort方法,再次输出排序后的顺序
*/
public void testSort3() {
List<String> strtinglist = new ArrayList<String>();
Random random = new Random();
Integer k;
String str = "abcedfghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
for (int i = 0; i < 10; i++) {
StringBuffer newstring = new StringBuffer();
do {
k = random.nextInt(10);
for (int j = 0; j < k+1; j++) {
newstring.append(str.charAt(random.nextInt(str.length())));
}
}while(strtinglist.contains(newstring));
System.out.println("将要添加字符串:"+"'"+newstring.toString()+"'");
strtinglist.add(newstring.toString());
}
System.out.println("----------排序前---------");
for (String string : strtinglist) {
System.out.println("元素"+string);
}
Collections.sort(strtinglist);
System.out.println("----------排序后---------");
for (String string : strtinglist) {
System.out.println("元素"+string);
}
}
public void testSort() { // 随机生成十条字符串 for(int i=0; i<10; i++) { StringBuilder str = new StringBuilder(); Random random = new Random(); // 长度为10以内的随机整数 int l = random.nextInt(10); for(int j=0; j<l; j++) { char ranChar = (char) Math.round(Math.random()*51+65); // 去掉特殊字符 if(ranChar<91 || ranChar>96) str.append(ranChar); } strings.add(str.toString()); } System.out.println("------------排序前-------------"); for(String str : strings) { System.out.println(strings.indexOf(str)+1+":"+str); } System.out.println("------------排序后-------------"); Collections.sort(strings); for(String str : strings) { System.out.println(strings.indexOf(str)+1+":"+str); } }
这样好像不太行 应该每次循环的最后清空一次newstring
int nsl= newstring.length();
newstring.delete(0,nsl);