Java中的UUID使int

时间:2018-09-29 20:58:52

标签: java uuid

我需要由6位数字组成的学生票的ID。例如,000004或123456,并且它必须是唯一的,因此请不要重复。我想使用UUID进行创建,有点不明白如何进行限制。

1 个答案:

答案 0 :(得分:2)

随机数,1到999,999

请参阅问题How to generate random integers within a specific range in Java?

int min = 1 ;
int max = 999_999 ;
int randomNum = ThreadLocalRandom.current().nextInt( min , max + 1 );

由于范围很小(一百万),因此您经常会发生冲突(重复)。

为避免重复,您必须收集所有使用的数字,并在每次尝试生成标识符时搜索该集合。您必须以线程安全的方式执行此操作。

推荐

用于您的目的。

不实际

随机的六位数字的大小不足以在任何重要的上下文中用作标识符。这就是为什么将员工证章和类似用例的编号按顺序(000001、000002等)完成的原因之一。

UUID

如果您想要一个真正通用的唯一标识符,请使用Universally Unique Identifier

作为128位值,您所拥有的值的天文学范围要比百万位数大。 UUID的Version 1 type消除了任何实际的冲突可能性。这就是为什么它被发明和标准化的原因。

对于少数情况(例如您的百万学生),即使是大多数随机的版本4也足够了。这是UUID.randomUUID生成的版本。