在java中生成唯一ID的最佳方法?

时间:2015-02-27 10:36:32

标签: java

我想创建java类,当用户创建id时,它会为这些字段生成唯一的id,它总是unqiue所以如何在java中这样做?

String dairyId;
String userId;
String productId;
String MerchantId;
String couponId;
String eventId;

3 个答案:

答案 0 :(得分:3)

UUID idTwo = UUID.randomUUID();将提供唯一的ID,

此外根据wikepedia

  

仅在下一个100每秒产生10亿UUID之后   多年来,只创造一个副本的概率就是   50%。

答案 1 :(得分:2)

您始终可以使用UUIDs

UUID idTwo = UUID.randomUUID();
  

UUID的目的是使分布式系统具有唯一性   识别信息而无需重要的中央协调在这   在上下文中,“唯一”这个词应该被理解为“实际上独特的”#34;   而不是"保证独特"。由于标识符有限   大小,两个不同的项目可以共享相同的   标识符

因此不保证不同跑步的独特性,但实际上保证"。

答案 2 :(得分:1)

当然UUID是最好的解决方案,但自从私有应用程序中的Java 8以来我总是使用:

    try {
        Thread.sleep(100);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    LocalDateTime localDateAndTime = LocalDateTime.now();
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd-HHmmss-SSS");
    String uid = localDateAndTime.format(formatter);

这节省了一个单独的日期时间变量,是线程保存,由于sleep(100)它保证SSS毫秒部分的唯一性,仍然是'人类可读的'UUID。