问答详情
源自:6-5 应用 Collections.sort() 实现 List 排序

交个作业~~main函数就不写了,分享一下方法

/**

* 3.对String泛型的List进行排序

* 创建String泛型的Lits,添加十个乱序的String元素

* 每条字符串的长度为10以内的随即整数

* 每条字符串的每个字符都为随即生成的字符,字符可以重复

* 每条随即字符串不可重复

* 调用sort方法,再次输出排序后的顺序

*/

public void testSort3() {

List<String> strtinglist = new ArrayList<String>();

Random random = new Random();

Integer k;

String str = "abcedfghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

for (int i = 0; i < 10; i++) {

StringBuffer newstring = new StringBuffer();

do {

k = random.nextInt(10);

for (int j = 0; j < k+1; j++) {

newstring.append(str.charAt(random.nextInt(str.length())));

}

}while(strtinglist.contains(newstring));

System.out.println("将要添加字符串:"+"'"+newstring.toString()+"'");

strtinglist.add(newstring.toString());

}

System.out.println("----------排序前---------");

for (String string : strtinglist) {

System.out.println("元素"+string);

}

Collections.sort(strtinglist);

System.out.println("----------排序后---------");

for (String string : strtinglist) {

System.out.println("元素"+string);

}

}


提问者:灰色的_ 2020-06-22 20:15

个回答

  • Du1in9
    2020-07-21 20:32:36

        public void testSort() {
            // 随机生成十条字符串
            for(int i=0; i<10; i++) {
                StringBuilder str = new StringBuilder();
                Random random = new Random();
                // 长度为10以内的随机整数
                int l = random.nextInt(10);
                for(int j=0; j<l; j++) {
                    char ranChar = (char) Math.round(Math.random()*51+65);
                    // 去掉特殊字符
                    if(ranChar<91 || ranChar>96) 
                        str.append(ranChar);
                }
                strings.add(str.toString());
            }
            System.out.println("------------排序前-------------");
            for(String str : strings) {
                System.out.println(strings.indexOf(str)+1+":"+str);
            }
            System.out.println("------------排序后-------------");
            Collections.sort(strings);
            for(String str : strings) {
                System.out.println(strings.indexOf(str)+1+":"+str);
            }
        }


  • 慕标2264835
    2020-07-05 15:50:48

    这样好像不太行 应该每次循环的最后清空一次newstring

    int nsl= newstring.length();

    newstring.delete(0,nsl);