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类下面要有属性和方法,具体代码要写在具体方法里,不能直接在类下写,我这第一次就犯了这样愚蠢的错误,导致编译器报语法错误还找不到,耽误了好久。。
继续努力吧!