【发布时间】:2019-02-04 21:10:11
【问题描述】:
我需要在 Java 中创建一个 64 位的唯一整数,以降低冲突的可能性。系统不是分布式的,所以不同计算机之间的冲突不是问题。
有什么办法,我们可以在 Java 中创建一个始终唯一的 64 位整数?
到目前为止,我正在使用 -
long number = System.nanoTime();
这是在 Java 中生成 64 位唯一整数的正确方法还是我可以尝试其他任何方法?
更新:-
这样做怎么样?这会是独一无二的吗?
UUID number = UUID.randomUUID();
long uniqueNumber = number.timestamp();
【问题讨论】:
-
当然。
i = 0,然后是i++,只要您需要一个新的。 -
碰撞几率是什么意思?
-
@MarcB 或者从
Long.MIN_VALUE开始,让它持续更长的时间。 -
因为
nanoTime()会给你以纳秒为单位的时间,这似乎是非常独特的。然后你可以做Integer unique64Integer = (int) number; -
@Ascalonian 禁止泛型,永远不要使用
Integer,加上ints 是 32 位...
标签: java random 64-bit long-integer uuid