通过时间和随机数字产生基本不重复的ID数字

工作需要研究别人做的,非原创.

首先建立一个随机数类,通过传入的数字来生成对应位数的随机正整数

public  static  String getRandom(int i){
        Random rd =new Random(); //生产一个可以产生0.0-1.0之间的随机数的对象
        if (i ==0 ){
            return ""; //如果传来的值为0 则返回一个空值
        }
        StringBuilder sb = new StringBuilder(); //生成一个可变的字符串
        for (int k = 0; k < i; k++){
            sb.append(rd.nextInt(9)); //每次循环都往字符串上增加一个0-9之间的随机正整数
        }
        return  sb.toString();//循环完毕,将i位的可变字符串转换为字符串类型返回
    }

然后建立一个将时间转换为指定位数数字的类,并且使用上面的随机数类产生指定位数的随机数字来避免重复

    public  static  String getDateTimeId(int i){
        SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmssSSS");//将时间转为17位的数字,最后三位为毫秒
        String sdf =df.format(new Date())+getRandom(i);//生成一个17+k位的随机数
        return sdf;//返回这个随机数
    }

时间可以通过其他方式获取,这样产生的随机数基本就不会重复了,需要注意的是,数据库用整数类型来接收此id,bigint数据类型的上限是19位,需要注意控制随机数的位数避免超出上限.

Supongo que te gusta

Origin blog.csdn.net/jtfyh/article/details/118229978
Recomendado
Clasificación