Java UUID字符串表示自然排序

Java UUID字符串表示自然排序,java,string,comparison,uuid,Java,String,Comparison,Uuid,假设我有两个UUID实例: uuid1 = UUID.randomUUID(); uuid2 = UUID.randomUUID(); 如果这两个比较使得uuid1小于uuid2,即 uuid1.compareTo(uuid2) // -1 它们的字符串表示形式是否总是会进行比较以得出相同的结果,即 uuid1.toString().compareTo(uuid2.toString()) // -1 ???? 简而言之,不是。下面是两个UUID的快速计数器示例,断言不适用于这两个UUID:

假设我有两个UUID实例:

uuid1 = UUID.randomUUID();
uuid2 = UUID.randomUUID();
如果这两个比较使得
uuid1
小于
uuid2
,即

uuid1.compareTo(uuid2) // -1
它们的字符串表示形式是否总是会进行比较以得出相同的结果,即

uuid1.toString().compareTo(uuid2.toString()) // -1 ????

简而言之,不是。下面是两个UUID的快速计数器示例,断言不适用于这两个UUID:

  • b230f7ab-9420-4a3e-a684-284c609e76a5
  • 76d1f3c9-fc72-4f1a-ab48-28a858d760c5

使用UUID中的compareTo可以得到-1,而字符串中的compareTo可以得到43

+1;从API和RFC的阅读来看,我本以为会有一致的行为,不过……请看;Oracle不会修复实现,甚至可能不会承认Javadoc是错误的。