随机值工具类

package com.utils;

import java.util.*;

public class RandomUtils {

    private static final Random RANDOM = new Random();
    private static final char[] NUMBERS = "0123456789".toCharArray();
    private static final char[] HEXS = "0123456789abcdef".toCharArray();
    private static final char[] LETTERS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();
    private static final char[] NUMBERS_AND_LETTERS = "0123456789abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();
    private static final char[] DELIMITER = ",.!?:;、。,!·:\n\t\r".toCharArray();

    /**
     * 产生length位的随机字符串
     *
     * @param length 字符长度
     * @return 字符串
     */
    public static String randomStr(int length) {
        if (length < 1) {
            throw new RuntimeException("length must be greater than 0");
        }

        char[] randBuffer = new char[length];
        for (int i = 0; i < randBuffer.length; i++) {
            randBuffer[i] = NUMBERS_AND_LETTERS[RANDOM.nextInt(72)];
        }

        return new String(randBuffer);
    }

    /**
     * 产生length位的16进制
     *
     * @param length 字符长度
     * @return 字符串
     */
    public static String randomHex(int length) {
        if (length < 1) {
            throw new RuntimeException("length must be greater than 0");
        }

        char[] randBuffer = new char[length];
        for (int i = 0; i < randBuffer.length; i++) {
            randBuffer[i] = HEXS[RANDOM.nextInt(16)];
        }

        return new String(randBuffer);
    }

    /**
     * 产生length长度的字母字符
     *
     * @param length 字符长度
     * @return 字母字符串
     */
    public static String randomLetter(int length) {
        if (length < 1) {
            throw new RuntimeException("length must be greater than 0");
        }

        char[] randBuffer = new char[length];
        for (int i = 0; i < randBuffer.length; i++) {
            randBuffer[i] = LETTERS[RANDOM.nextInt(51)];
        }

        return new String(randBuffer);
    }

    /**
     * 产生length位的随机数字
     *
     * @param length 长度
     * @return 数字字符串
     */
    public static String randomNum(int length) {
        if (length < 1) {
            throw new RuntimeException("length must be greater than 0");
        }

        char[] randBuffer = new char[length];
        for (int i = 0; i < randBuffer.length; i++) {
            randBuffer[i] = NUMBERS[RANDOM.nextInt(10)];
            if (i == 0) {
                if (randBuffer[i] == '0') {
                    i--;
                }
            }
        }

        return new String(randBuffer);
    }

    /**
     * 随即产生min到max之间的随机数,包含max和min
     *
     * @param min 最小值
     * @param max 最大值
     * @return 数字
     */
    public static int randomInt(int min, int max) {
        if (min == max) {
            return min;
        }
        return RANDOM.nextInt(max + 1) % (max - min + 1) + min;
    }

    /**
     * 随机产生min到max之间的long值
     *
     * @param min 最小值
     * @param max 最大值
     * @return 数字
     */
    public static long randomLong(long min, long max) {
        if(min == max){
            return min;
        }
        return Math.abs(RANDOM.nextLong() % (max - min + 1)) + min;
    }

    public static double randomDouble(int length, int decimal) {
        if (length <= decimal) {
            return 0D;
        }
        return Double.parseDouble(randomNum(length - decimal) + "." + randomNum(decimal));
    }

    public static boolean randomBoolean() {
        return RANDOM.nextInt(2) % 2 == 0;
    }

    public static String randomUUID() {
        return UUID.randomUUID().toString();
    }

    /**
     * 随机产生标点符号
     *
     * @return 标点符号
     */
    public static char randomDelimiter() {
        return DELIMITER[randomInt(0, DELIMITER.length - 1)];
    }

    public static String randomIp() {
        return randomInt(1, 254) + "." + randomInt(1, 254) + "." + randomInt(1, 254) + "." + randomInt(1, 254);
    }

    /**
     * 从数组中随机选择一个
     * @param arr 数组
     * @param <T> 泛型
     * @return 对象
     */
    public static <T> T randomChose(T... arr) {
        return arr[randomInt(0, arr.length - 1)];
    }

    public static String randomPassword(int length) {
        if (length < 8) {
            throw new RuntimeException("password length must be greater than 8");
        }

        char[] lowerLetters = "abcdefghijklmnopqrstuvwxyz".toCharArray();
        char[] upperLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();


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

        // 2个数字
        password.add(String.valueOf(NUMBERS[randomInt(0, NUMBERS.length - 1)]));
        password.add(String.valueOf(NUMBERS[randomInt(0, NUMBERS.length - 1)]));

        // 2个小写字母
        password.add(String.valueOf(lowerLetters[randomInt(0, lowerLetters.length - 1)]));
        password.add(String.valueOf(lowerLetters[randomInt(0, lowerLetters.length - 1)]));

        // 2个大写字母
        password.add(String.valueOf(upperLetters[randomInt(0, upperLetters.length - 1)]));
        password.add(String.valueOf(upperLetters[randomInt(0, upperLetters.length - 1)]));

        for (int i = 6; i < length - 1; i++) {
            password.add(String.valueOf(NUMBERS_AND_LETTERS[randomInt(0, NUMBERS_AND_LETTERS.length - 1)]));
        }

        password.sort(Comparator.comparingInt(o -> randomInt(0, 10)));
        return randomLetter(1) + CollectionUtils.join(password, "");
    }
}
AnimationUtils 动画工具类 AppUtils APP相关信息工具类 AssetDatabaseOpenHelper 目录资源获取 Base64 加密 BitmapUtil 获取Bitmap和对Bitmap的操作 ChannelUtil 获取市场号 Colors 颜色工具类 包括常用的色 DES DES加密解密类 DataCleanManager 本应用数据清除管理器 DatabaseExportUtils 应用数据库导出工具类 DateUtil 日期操作工具类 DbHelper 数据库帮助类 DensityUtil 屏幕信息获取数的转换 DeviceStatusUtils 手机状态工具类 主要包括网络、蓝牙、屏幕亮度、飞行模式、音量等 DigestUtils DigestUtils FileUtils 文件操作 HanziToPinyin 拼音汉字处理 IOUtils IOUtils MD5 MD5 MiscUtils 设备信息的获取 NetWorkUtils 网络状态 PhoneUtil 手机组件调用工具类 PreferencesUtils sp工具类 RandomUtils 随机工具类 RecorderControl 录音工具类 SerializeUtils Serialize ShellUtils shell指令 ShortCutUtils 创建删除快捷图标 SingletonUtils 单例工具 SizeUtils SizeUtils SqliteUtils SqliteUtils StreamUtils 流转换成字符串 StringUtils String SystemUtils 线程池工具类 TimeUtils TimeUtils ToastUtils ToastUtils TransitionTime 用来计算显示的时间是多久之前 ViewAnimationUtils 视图动画工具箱,提供简单的控制视图的动画的工具方法 ViewUtils view控制 WiFiUtil WiFiUtil WindowUtils 窗口工具箱 ZipUtil 实现的Zip工具 BadgeUtil 设置Badge LogUtil LogUti工具类 ArrayUtils 数组工具类,提供一些有关数组的便捷方法 ByteUtils 字节工具类,提供一些有关字节的便捷方法 CheckAdapter 选择适配器 CheckingUtils 提供常用数据验证的工具类,不符合的话就抛异常 Countdown 倒计时器 DialogUtils 对话框工具箱 DoubleClickExitDetector 双击退出识别器 ImageProcessor 图片处理器 InputMethodUtils 软键盘工具类 LoopTimer 循环定时器 NestedGridView 嵌套使用的GridView NestedListView 嵌套使用的ListView OSUtils Android系统工具箱 OtherUtils 主要是给字符串添加html ReflectUtils 反射工具类,提供一些Java基本的反射功能 RegexUtils 正则表达式工具类,提供一些常用的正则表达式 SDCardUtils SD卡工具箱 Symbols 常用符号 WebViewManager WebView管理器,提供常用设置 原地址:https://github.com/l123456789jy/Lazy
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值