好吧,我一直在寻找在 java 代码中生成 UID 的方法(其中大多数也进入了 stackoverflow)。最好是使用 java 的 UUID 来创建唯一的 id,因为它使用时间戳。但我的问题是它是 128 位长,我需要一个较短的字符串,比如 14 或 15 个字符。所以,我设计了以下代码来做到这一点。
Date date = new Date();
Long luid = (Long) date.getTime();
String suid = luid.toString();
System.out.println(suid+": "+suid.length() + " characters");
Random rn = new Random();
Integer long1 = rn.nextInt(9);
Integer long2 = rn.nextInt(13);
String newstr = suid.substring(0, long2) + " " + long1 + " " + suid.subtring(long2);
System.out.println("New string in spaced format: "+newstr);
System.out.println("New string in proper format: "+newstr.replaceAll(" ", ""));
请注意,我只是显示间隔格式和格式正确的字符串,仅用于与原始字符串进行比较。
这会保证每次都有 100% 的唯一 ID 吗?或者你认为这些数字有可能重复吗?此外,我可以在开始或结束时将随机数插入“可能”创建重复数字的随机位置,而不是插入。这是为了完成我的 UID 所需的长度。尽管如果您需要少于 13 个字符的 UID,这可能不起作用。
有什么想法吗?