大家好,又见面了,我是你们的朋友全栈君。
前段时间,写了一个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.cn/148971.html原文链接:https://javaforall.cn