我正在尝试为DS中的每个请求生成一个唯一的id。我正在考虑连接一个随机整数和请求接收的时间戳。由于获得随机整数可能会导致负值,我决定打印十六进制表示:
String randomPrefix = Integer.toHexString(RANDOM.nextInt()).toUpperCase();
java.util.Date date = new java.util.Date();
String timestamp = Long.toHexString(date.getTime()).toUpperCase();
String id = randomPrefix.concat(timestamp);
我不太擅长概率,但我想知道是否有其他操作可以在字符串长度较短的情况下,使该值同样低(甚至更好地不出现重复)。
像门外汉一样说,串联应该是X重复的机会,而加法则是+(重复的机会更高)。
请建议其他方法来获得更干净、更短的ID(或确认这是否正确)。
p.S:请原谅我在这方面的外行语言
尝试使用UUID
System.out.println(UUID.randomUUID().toString());
打印类似以下内容:
3aae7d1a-8799-4a6f-8863-cde6b1782e7b
将if用于ids
是一种常见的做法
但为什么你需要短的随机id?您应该明白,短id有更多机会获得重复项,而ID
字段通常用于程序而非人员。