Java-慕课网例子-对列表元素排序

0.描述
/**
 * 目标:给字符串列表元素排序;
 * 步骤:1.随机生成10对字符串;
 * 2.调用sort方法排序;
 * 要求:生成的字符串内容不相同;字符可以相同;字符串长度为10以内;
 */
1.程序与结果
import java.util.*;

public class CollectionsTest {
    /**
     * 目标:给字符串列表元素排序;
     * 步骤:1.随机生成10对字符串;
     * 2.调用sort方法排序;
     * 要求:生成的字符串内容不相同;字符可以相同;字符串长度为10以内;
     */
    public static void main(String[]args){
        List list = generateStringList();
        sortStringList(list);
    }
    //实现排序并打印的方法
    public static void sortStringList(List<String> list){
        System.out.println("排序前的list元素为:"+ Arrays.toString(list.toArray()));
        Collections.sort(list);
        System.out.println("-----------------------");
        System.out.println("排序后的list元素为:"+ Arrays.toString(list.toArray()));
    }
    //随机生成存在10个字符串的列表
    public static List generateStringList(){
        List<String> list = new ArrayList<String>();
        Random rand = new Random();
        for(int i=0;i<10;i++){
            String newStr = "";
            do {
                int randLen = rand.nextInt(10);
                for (int j = 0; j <= randLen; j++) {
                    int randChar = 'a' + rand.nextInt(25);
                    newStr += (char) randChar;
                }
                list.add(newStr);
            }while(!list.contains(newStr));
        }
        return list;
    }
}
排序前的list元素为:[kcuit, tpoap, jtqj, mpadxu, uoydtjcyf, bk, ej, adk, xhjhwm, kedhgs]
-----------------------
排序后的list元素为:[adk, bk, ej, jtqj, kcuit, kedhgs, mpadxu, tpoap, uoydtjcyf, xhjhwm]

Process finished with exit code 0
2.改进

上面的方法生成的随机字符串只包括了小写字母;
我们希望加上数字和大写字母。

import java.util.*;

public class CollectionsTest2 {
    /**
     * 改进:生成的字符串当中,还应当包括大写字母和数字
     */
    public static void main(String[]args){
        List list = generateStringList();
        sortStringList(list);
    }
    //实现排序并打印的方法
    public static void sortStringList(List<String> list){
        System.out.println("排序前的list元素为:"+ Arrays.toString(list.toArray()));
        Collections.sort(list);
        System.out.println("-----------------------");
        System.out.println("排序后的list元素为:"+ Arrays.toString(list.toArray()));
    }
    //随机生成存在10个字符串的列表
    public static List generateStringList(){
        List<String> list = new ArrayList<String>();
        Random rand = new Random();
        for(int i=0;i<10;i++){
            String newStr = "";
            do {
                int randLen = rand.nextInt(10);
                for (int j = 0; j <= randLen; j++) {
                    int randCharType = rand.nextInt(3);//随机0,1,2分别表示小写,大写和数字
                    int randChar;//存储随机生成的字符
                    switch(randCharType){
                        case 0://小写
                            randChar = 'a' + rand.nextInt(25);
                            newStr += (char) randChar;
                            break;
                        case 1://大写
                            randChar = 'A' + rand.nextInt(25);
                            newStr += (char) randChar;
                            break;
                        case 2://数字
                            randChar = '0' + rand.nextInt(9);
                            newStr += (char) randChar;
                            break;
                    }
                }
                list.add(newStr);
            }while(!list.contains(newStr));
        }
        return list;
    }
}
排序前的list元素为:[w, rOG6C8L, 3L5a0, 25Eso47j8Q, Pad, 3, e3m1, 5Lc, j7RBbwE, KcNvXJP]
-----------------------
排序后的list元素为:[25Eso47j8Q, 3, 3L5a0, 5Lc, KcNvXJP, Pad, e3m1, j7RBbwE, rOG6C8L, w]

Process finished with exit code 0

其实上述随机生成大小写字母和数字的实现方法还有其他选择;
比如将0-9a-zA-Z放到数组或者字符串中,随机生成0-61的整数也可以实现。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值