Java 唯一ID生成器「建议收藏」

Java 唯一ID生成器「建议收藏」前言:   前段时间,写了一个ID生成,发在群里,结果遭到别人嘲笑,心有不甘,于是思来想去,决定在重新写一个ID生成器。此方法生成的ID理论上也是会有重复,但是这个概率太低太低,低到可以忽略不计。原理:使用当前时间戳+指定长度的随机数,并随机打乱字符串。可以生成指定长度的纯数字的ID。具体实现代码:/***普通Id生成器,用时间戳生成+2位随机数生成,*此方法

大家好,又见面了,我是你们的朋友全栈君。

前言:

     前段时间,写了一个ID 生成器,发在群里,结果遭到别人嘲笑,心有不甘,于是思来想去,决定在重新写一个ID生成器。此方法生成的ID理论上也是会有重复,但是这个概率太低太低,低到可以忽略不计。

原理:

使用当前时间戳+指定长度的随机数,并随机打乱字符串。可以生成指定长度的纯数字的ID。

具体实现代码:

/**  * 普通Id生成器,用时间戳生成+指定位随机数生成,  * 此方法用于单机应用并且并发量不高的情况之下  *  * @return  */ public static String getId() {
    //获取当前时间戳
    String str = String.valueOf(System.currentTimeMillis());
    List list = new ArrayList();
    //将时间戳放入到List中
    for (Character s : str.toCharArray()) {
        list.add(s.toString());
    }
    //随机打乱
    Collections.shuffle(list);
    //拼接字符串,并添加2(自定义)位随机数
    return String.join("", list) + randomNumber(2);
}


/**  * 生成指定长度的一个数字字符串  *  * @param num  * @return  */ public static String randomNumber(int num) {
    if (num < 1) {
        num = 1;
    }
    Random random = new Random();
    StringBuilder str = new StringBuilder();
    for (int i = 0; i < num; i++) {
        str.append(random.nextInt(10));
    }
    return str.toString();
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/148971.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 纯CSS实现自定义单选框和复选框

    纯CSS实现自定义单选框和复选框<!DOCTYPEhtml><html> <head> <metacharset=”utf-8″> <title></title> <styletype=”text/css”> #main{ display:flex; justify-content:center; align-items:center; flex-wrap:wrap; } .

    2022年5月29日
  • win10快捷图标小箭头怎么恢复_win10恢复快捷方式小箭头

    win10快捷图标小箭头怎么恢复_win10恢复快捷方式小箭头regadd”HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIcons”/v29/d”%systemroot%\system32\imageres.dll,197″/treg_sz/f  taskkill/f/imexplorer.exe  attrib-s…

    2022年10月18日
  • android 自定义progressdialog,自定义ProgressDialog

    android 自定义progressdialog,自定义ProgressDialog最近工作中需要用到progressDialog,可是系统自带的黑色progressDialog又是其丑无比,无奈只能自己自定义了,在网上查看别人的例子,并自己整理了一份Demo:先上图:MyProgressDialog:packagecom.example.myprogressdialog_zzw;importandroid.app.Dialog;importandroid.content….

    2022年7月14日
  • CPLD和FPGA的区别(转)[通俗易懂]

    CPLD和FPGA的区别(转)[通俗易懂]原文:http://tvb2058.spaces.eepw.com.cn/articles/article/item/15358本文重点从CPLD的结构来讲的,从而说明其与FPGA的区别——————————————————————————————————-…

    2022年5月29日
  • Resnet-18网络图示理解

    Resnet网络简介:resnet-18网络图示:17个卷积层(conv)+1个全连接层(fc)提示:BN就是批量归一化RELU就是激活函数lambdax:x这个函数的意思是输出等于输入identity就是残差1个resnetblock包含2个basicblock1个resnetblock需要添加2个残差在resnetblock之间残差形式是1*1conv,在resne

    2022年4月3日
  • 百万建模师的心声:3D游戏建模真的很累,但是数钱不累「建议收藏」

    百万建模师的心声:3D游戏建模真的很累,但是数钱不累「建议收藏」所有行业都是一样的,没有什么容易的,只不过这一行是偏向于技术的,一个有好的建模师月薪10k+是很常见的,这个需要有自己刻苦学习的成果。游戏建模前景在游戏模型行业,你基本不用担心找不到工作,因为游戏模型师人才缺口非常大。举个例子:游戏制作公司的人员配比大多数是这样的:比如100人的三维制作组,可能有60人在做模型贴图,10个人在K动画。只要你保证技能在手,一定是抢手的人才。【点击加入学习圈】游戏建模如今的市场竞争很大,工资很高,标准非常高,想要胜任一份高薪的工作不是那么容易。学习建模这是一个非

    2022年5月19日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号