有没有办法根据参数生成uuid? 我有3个类型的参数:Date,Int&诠释 我想基于其中的三个来生成UUID,这样每次对于相同的3我将获得相同的UUID。
答案 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;创建这个数组。中间体