我一直在寻找在Java代码中生成UID的方法(大多数都是在stackoverflow上找到的)。最好的方法是使用Java的UUID创建唯一标识符,因为它使用时间戳。但我的问题是它长度为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,则这种方法可能不起作用。
您有什么想法吗?