为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
Java
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();
    }
}
点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消