public class CollectionsTestTwo {
/**
* 通过collections.sort()方法对String泛型进行排序
* 1、要创建一个String泛型,并且随机添加十个字符串
* @param args
*/
public void testSort1() {
String str = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
Random random = new Random();
List<String> stringList = new ArrayList<String>();
for(int i =0;i<10;i++) {
//使用StringBuffer创建一个新的字符串对象
StringBuffer sb = new StringBuffer();
int stringLength = random.nextInt(10);
if(stringLength == 0) {
continue;
}else {
for(int j =0;j<stringLength;j++) {
int num = random.nextInt(str.length());//随机产生一个str的索引位置
sb.append(str.charAt(num));//将str在num位置上的值添加到sb字符串对象中
}
}
stringList.add(sb.toString());
System.out.println("将要添加字符串:" + sb.toString());
}
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);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
CollectionsTestTwo ctt = new CollectionsTestTwo();
ctt.testSort1();
}
}
看了看下,虽然可以输出十个随机字符串并排序,但是
没有完成第四个规定,那就是并没有规定是十个不一样的随机字符串。
可以在添加字符串前判断是否存在,如不存在就跳出重新循环。
具体可以参考下:
loop:
for(int i=0;i<10;) {
//使用StringBuffer创建一个新的字符串对象
StringBuffer sb = new StringBuffer();
int stringLength = random.nextInt(10);
if(stringLength == 0) {
continue;
}else {
for(int j =0;j<stringLength;j++) {
int num = random.nextInt(str.length());//随机产生一个str的索引位置
sb.append(str.charAt(num));//将str在num位置上的值添加到sb字符串对象中
}
}
//判断将要添加的字符串是否已经存在
if (stringList.contains(sb.toString())) {
continue loop;
}
stringList.add(sb.toString());
i++;
System.out.println("将要添加字符串:" + sb.toString());
}