package com.imooc.collection;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
/***
* 利用Collections.sort()方法对泛型为String的List进行排序
* 1.创建List<String>之后,往其中添加十条随机字符串
* 2.每条字符串的长度为10以内的随机整数
* 3.每条字符串的每个字符都为随机生成的字符,字符可以重复
* 4.每条随机字符串不可重复
*/
public class TestSort {
Random random =new Random();
public void testSort() {
List<String> stringList = new ArrayList<String>();
String str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
for(int i=0;i<10;i++){//i为字符串个数
StringBuilder sbu = new StringBuilder();
do {
int j;//j为字符串长度
do{
j= random.nextInt(10);
}while(j==0);//保证字符串不为空
for( int k=0;k<j;k++) {
int l = str.length();//可添加的字符串str的长度
int q = random.nextInt(l);//q为str任意位置的元素
sbu.append(str.charAt(q));//将str中第q位置的元素加到sbu对象的末尾
}
}while(stringList.contains(sbu));//保证生成的字符串不重复
stringList.add(sbu.toString());//将新生成的stu转换为String对象并加到stringList末尾
}
System.out.println("--------排序前----------");
for (String string : stringList) {//foreach方法遍历stringList中的元素
System.out.println("添加字符串:"+string);
}
System.out.println("--------排序后----------");
Collections.sort(stringList);//调用Collection.sort()方法对stringList进行排序
int n=0;
for (String string : stringList) {
n++;
System.out.println("排序后第"+n+"个字符串"+":"+string);
}
}
public static void main(String[] args) {
TestSort ts = new TestSort();
ts.testSort();
}
}输出结果:
--------排序前----------
添加字符串:oelSqQwRz
添加字符串:D6FhzX3U
添加字符串:h7
添加字符串:5
添加字符串:71sE
添加字符串:A
添加字符串:A015nGbi
添加字符串:wkCk
添加字符串:sPNHjzvWL
添加字符串:X
--------排序后----------
排序后第1个字符串:5
排序后第2个字符串:71sE
排序后第3个字符串:A
排序后第4个字符串:A015nGbi
排序后第5个字符串:D6FhzX3U
排序后第6个字符串:X
排序后第7个字符串:h7
排序后第8个字符串:oelSqQwRz
排序后第9个字符串:sPNHjzvWL
排序后第10个字符串:wkCk
————————————————————————————————————————————————————————
参考了一些其他同学的,第一次小练习。
光看和自己写还是不一样。
一些总结:
charAt() 方法用于返回指定索引处的字符。索引范围为从 0 到 length() - 1。
确保生成随机数不重复,使用do while( .contains() )循环。
class类下面要有属性和方法,具体代码要写在具体方法里,不能直接在类下写,我这第一次就犯了这样愚蠢的错误,导致编译器报语法错误还找不到,耽误了好久。。
继续努力吧!
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦