Java UUID字符串表示自然排序
假设我有两个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:
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是错误的。