继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Java入门第三季—6.5生成随机字符串并排序

散华礼之弥
关注TA
已关注
手记 4
粉丝 2
获赞 15
package 随机String排序;

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

public class RandomStringSort {

    //随机数生成的最大最小范围
    private static final int MAX = 122;
    private static final int MIN = 48;
    //带泛型String的List
    private static List<String> stringList = new ArrayList<>();

    public static void main(String[] args) {
        //初始化数据
        initData();
        //排序前显示
        System.out.println("----------排序前----------");
        showData();
        //排序后显示
        Collections.sort(stringList);
        System.out.println("----------排序后----------");
        showData();
    }

    /**
     * 向List中添加数据
     */
    private static void initData() {
        for (int i = 0; i < 10; i++) {
            stringList.add(buildRandomString());
        }
    }

    /**
     * List中内容的显示
     */
    private static void showData() {
        for (String string : stringList) {
            System.out.println(string);
        }
    }

    /**
     * 生成随机字符串
     * @return String
     */
    private static String buildRandomString() {
        /*
         * a = 97
         * z = 122
         * A = 65
         * Z = 90
         * 0 = 48
         * 9 = 57
         * 首先生成48-122的随机数
         * 然后进行区间判断
         * 最后转化为char再拼接成String
         */
        StringBuilder stringBuilder = new StringBuilder();
        Random random  = new Random();
        // 随机字符串的长度
        int length;
        // 生成的随机数
        int r;
        do {
            length = random.nextInt(11);
            for (int i = 0; i < length; i++) {
                // 判断生成的随机数r是否是大小写字母或数字
                // 如果不是则重新生成r
                r = random.nextInt(MAX)%(MAX - MIN + 1) +MIN;
                while(!((r >= 48 && r <= 57)||(r >= 65 && r <= 90)||(r >= 97 && r <= 122))) {
                    r = random.nextInt(MAX)%(MAX - MIN + 1) +MIN;
                }
                stringBuilder.append((char)r);
            }
            // 这里并没有判断stringList中是否已经存在要插入的字符串
            // 因为每次的字符串都是随机长度和内容的
            // 存在重复的概率是极小的,所以忽略掉了
        } while (length == 0);
        return stringBuilder.toString();
    }
}
打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP