/** 3.对String泛型的List进行排序
* 创建一个String泛型的List,添加十条随机的String元素
* 每条字符串的长度为10以内的随机整数
* 每条字符串的每个字符都为随机生成的字符,字符可以重复
* 每条随机字符串不可重复
*/
public void testStringSort() {
int number = 0;
List<String> listsort = new ArrayList<String>();
// 定义一个字符串保存,1-9,A-Z,a-z.
String string1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstyvwxyz";
Random rd = new Random();
for (int i = 0; i < 10; i++) {
//用来保存每条字符串 循环十次
String st2 = new String();
for (int x = 0; x < rd.nextInt(10) + 1; x++) {
int k = 0;
do {
//随机获取string1字符串长度之内的int型数字
k = rd.nextInt(string1.length());
//通过字符串的charAt方法取得随机数k所对应的下标的字符,并且加上"",转换为字符串st2,
st2 += string1.charAt(k)+"";
//添加contains()方法进行判断listsort中是否包含该字符串
} while (listsort.contains(st2));
}
System.out.println("将要添加的元素:" + st2);
listsort.add(st2);
}
System.out.println("————————————排序前————————");
for (String string : listsort) {
System.out.println("第" + (number + 1) + "条字符串:" + string);
number++;
}
Collections.sort(listsort);
number = 0;
System.out.println("————————————排序后————————");
for (String string : listsort) {
System.out.println("第" + (number + 1) + "条字符串:" + string);
number++;
}
}
//仅供参考,复制粘贴对你没一点好处。
运行是没有问题的,但是有时会出现生成了空字符串的现象,请问是为什么?
如下:
成功添加字符串:dHh
成功添加字符串:54
成功添加字符串:llPn79BN
成功添加字符串:
成功添加字符串:xUMCX
成功添加字符串:h
成功添加字符串:E
成功添加字符串:D3jPaDdH
成功添加字符串:gwSrek
成功添加字符串:
----------排序前-----------
字符串为:dHh
字符串为:54
字符串为:llPn79BN
字符串为:
字符串为:xUMCX
字符串为:h
字符串为:E
字符串为:D3jPaDdH
字符串为:gwSrek
字符串为:
----------排序后-----------
字符串为:
字符串为:
字符串为:54
字符串为:D3jPaDdH
字符串为:E
字符串为:dHh
字符串为:gwSrek
字符串为:h
字符串为:llPn79BN
字符串为:xUMCX
有一个潜在问题就是,用来保存每条字符串的对象都是String 每次在string1中取得一个字符之后再加到st2上去,实际上是在内存中又生成了一个String 对面空间
这样代码的问题就在于 ,如果要生成多条字符串的时候 要占用太多系统内存 造成资源浪费