如果我有一组独特的Longs,如何获得一组独特的整数?

时间:2013-01-04 08:27:08

标签: java casting primitive

我有一套Longs(实际为Timestamps)。显然,他们无法在不丢失数据的情况下投放到Integers,因为timestamp不适合Integer范围。我需要根据这些Integer生成Longs类型的主键。有没有办法做到这一点?

3 个答案:

答案 0 :(得分:2)

由于Long s比Integer更多,因此没有安全的方法可以对所有Long s进行操作。
但是,如果Long不是太远,您可以将第一个时间戳用作0,广告然后只需使用差异为每个后续时间戳获取唯一Integer。 / p>

答案 1 :(得分:1)

有很多方法,但你真的认为基于时间戳的主键是个好主意吗?有几个具有相同时间戳的条目并不难,所以它不会是一个非常好的密钥。

无论如何,既然你使用的是java,我猜你的时间戳是以毫秒为单位的。将它截断为秒是非常糟糕的想法(在同一秒内很容易与其他条目发生冲突)可能好主意是“移位”时间戳:从时间戳中选择最小日期并使其为零时间戳,其他相对于它:在这种情况下,你可能会适合整数。

答案 2 :(得分:1)

假设创建日期时间戳的范围有限。让我们说2004年12月12日之后的日期。似乎是一种截断最高有效数字的合理方法,例如

long 00001357288262
int      1357288262