根据给定的参数生成UUID?

时间:2016-03-02 16:06:14

标签: scala

有没有办法根据参数生成uuid? 我有3个类型的参数:Date,Int&诠释 我想基于其中的三个来生成UUID,这样每次对于相同的3我将获得相同的UUID。

2 个答案:

答案 0 :(得分:2)

UUID有128位,所以如果你说的是java.util.Date存储64位时间戳(Long)和两个32位Int s,那么你可以为每个组合制作一个唯一的UUID。

java.util.UUID有一个构造函数,它接受两个Long s(64位)。 Date可以是其中之一,并且可以将两个32位Int组合成一个,通过将第一个按位移位31到左侧(1个用于符号),并且添加第二个。

import java.util.{ Date, UUID }

def generate(date: Date, a: Int, b: Int): UUID =
    new UUID(date.getTime, a.toLong << 31 + b.toLong)

scala> val d = new Date()
d: java.util.Date = Wed Mar 02 11:22:52 EST 2016

scala> generate(d, 23, 43532)
res23: java.util.UUID = 00000153-3823-9fa6-0000-000b8000aa0c

答案 1 :(得分:1)

如果你在谈论java.util.UUID(我认为Scala使用了这个Java对象),可以在nameUUIDFromBytes(byte[] name)的某些字节数组的基础上创建UUID。所以你需要的是从你的Date,Int&amp; amp;创建这个数组。中间体