import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
public class testCollection {
/**
*利用Collections.sort()方法对泛型为String的List进行排序
*1.创建完List<String>之后,往其中添加十条随机字符串
*2.每条字符串的长度为10以内的随机整数
*3.每条字符串的每个字符都为随机生成的字符,字符可以重复
*4.每条随机字符串不可重复
*/
Random random=new Random();
public void testSort() {
List<String> stringList=new ArrayList<String>();
String str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
for(int i=1;i<=10;i++) {//i为字符串个数
StringBuilder sb=new StringBuilder();//创建一个空的StringBuilder对象
do{
int j;//j为字符串长度
do {
j=random.nextInt(10);//生成任意的字符串长度
}while(j==0);//若字符串长度为0,则重新生成
for(int k=0;k<j;k++) {//k为字符串索引,从0开始
int l=random.nextInt(61);//l为str字符串任意位置,str共有62个,位置为0-61
sb.append(str.charAt(l));//获取str中任意位置的元素,追加到sb对象的末尾
}
}while(stringList.contains(sb));//若字符串与已生成的字符串List集合中的任一个重复,则重新生成
stringList.add(sb.toString());//将已生成的字符串StringBuilder对象转换为String对象添加到stringList中
}
System.out.println("—————————第一种方法————————");
System.out.println();
System.out.println("——————————排序前——————————");
for (String string : stringList) {//foreach方法遍历系统自动生成的stringList中元素
System.out.println("系统自动添加字符串:"+string);
}
Collections.sort(stringList);//调用Collections.sort()方法对stringList进行排序
System.out.println("——————————排序后——————————");
int m=0;
for (String string : stringList) {//foreach方法遍历经排序后的stringList中元素
m++;
System.out.println("排序后字符串"+m+":"+string);
}
}
public void sortTest() {
List<String> stringList=new ArrayList<String>();
for(int i=1;i<=10;i++) {
StringBuilder sb=new StringBuilder();
do {
int j;
do{
j=random.nextInt(10);
}while(j==0);
int k;
for(k=0;k<j;) {
int l=random.nextInt(127);//l为ASCII码表的任意码值,ASCII码表字符共有128个,码值为0-127
if((l>47&&l<58)||(l>64&&l<91 )||(l>96&&l<123)) {//数字,英文字符大、小写ASCII码值范围
sb.append((char)l);//ASCII码转换成字符串,追加到sb对象的末尾
}else {
continue;//若随意生成的码值不在数字,英文字符大、小写ASCII码值范围内,则跳出循环执行下一次
}k++;
}
}while(stringList.contains(sb));
stringList.add(sb.toString());
}
System.out.println("—————————第二种方法————————");
System.out.println();
System.out.println("——————————排序前——————————");
for (String string : stringList) {//foreach方法遍历系统自动生成的stringList中元素
System.out.println("系统自动添加字符串:"+string);
}
Collections.sort(stringList);//调用Collections.sort()方法对stringList进行排序
System.out.println("——————————排序后——————————");
int m=0;
for (String string : stringList) {//foreach方法遍历经排序后的stringList中元素
m++;
System.out.println("排序后字符串"+m+":"+string);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
testCollection tc=new testCollection();
tc.testSort();
tc.sortTest();
}
}
运行结果预览:
热门评论
你那个应该写为andom.nextInt(11);
它是指在0到所写的数之间取值(包括0)