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

终于完成!!当时,为什么Collections.sort(strList)可以直接实现排序了.

package com.kandy.imoockecheng.listmap;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;

public class StringSort {
    public static void main(String[] args) {
        /*
         * 随机生成10条长度10以内,不可重复的字符串,每条字符串内的字符可以重复
         * 为节省String消耗,全部使用 StringBuilder
         */

        //定义字符串条数
        int count = 10;

        //定义最大字符串的长度
        int maxLength = 10;

        //定义备选字符N个
        StringBuilder stringBuilder = new StringBuilder("ABCDEFGHIJGLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890");

        //定义被选出来的字符串
        StringBuilder stringSel = new StringBuilder();

        //创建字符串List集合
        List<String> strList = new ArrayList<>();

        //do循环控制字符串的条数
        do {
            //随机字符串的长度(10以内)
            int rdLong = new Random().nextInt(maxLength);

            //for循环随机拼凑字符的和长度
            for (int i = 0; i < rdLong; i++) {
                //随机获取备选字符串某个字符的索引位置
                int index = new Random().nextInt(stringBuilder.length());

                //按索引位置选出一个字符,把随机生成的字符追加到stringSel
                stringSel.append(stringBuilder.charAt(index));
            }
            //如果包含字符串,重新生成随机字符串
            if(strList.contains(stringSel.toString())) continue;

            //把随机生成的字符串添加到strList中
            strList.add(stringSel.toString());

            //清空stringSel
            stringSel.delete(0,stringSel.length()-1);
        } while (strList.size() != count); //10条后跳出do循环

        System.out.println("*******排序前************");
        strList.forEach(System.out::println);

        //进行排序
        Collections.sort(strList);
        System.out.println("*******排序后************");
        strList.forEach(System.out::println);

    }
}


提问者:Kandy 2020-01-04 23:14

个回答

  • _牧渊
    2020-02-18 23:56:06

    我觉得可能是Collection是一个父类的接口,List是它的子类接口,并没有继承sort方法

  • Kandy
    2020-01-04 23:19:29

    运行结果:

    http://img1.mukewang.com/5e10acdb0001204603760753.jpg