Scala 根据给定参数生成UUID?

Scala 根据给定参数生成UUID?,scala,Scala,有没有办法根据参数生成uuid? 我有3个类型的参数:Date、Int和Int 我想基于其中三个生成UUID,这样每次对于同一个3,我都会得到相同的UUID。如果你说的是java.util.UUID(我假设Scala在引擎盖下使用这个java对象),那么就可以基于nameUUIDRomBytes(byte[]name)的字节数组创建UUID。因此,您需要从日期Int&Int创建此数组。UUID有128位,因此如果您谈论的是存储64位时间戳(Long)和两个32位Int的java.util.Dat

有没有办法根据参数生成uuid? 我有3个类型的参数:Date、Int和Int
我想基于其中三个生成UUID,这样每次对于同一个3,我都会得到相同的UUID。

如果你说的是
java.util.UUID
(我假设Scala在引擎盖下使用这个java对象),那么就可以基于
nameUUIDRomBytes(byte[]name)
的字节数组创建UUID。因此,您需要从日期Int&Int创建此数组。

UUID有128位,因此如果您谈论的是存储64位时间戳(
Long
)和两个32位
Int
java.util.Date
,那么您可以为每个组合创建唯一的UUID

java.util.UUID
有一个接受两个
Long
s(64位)的构造函数。
Date
可以是其中之一,两个32位的
Int
s可以组合成一个,将第一个位向左移动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
import java.util.{Date,UUID}
def生成(日期:日期,a:Int,b:Int):UUID=
新UUID(date.getTime,a.toLong val d=new date()
d:java.util.Date=Wed Mar 02 11:22:52美国东部时间2016年3月2日
scala>生成(d,2343532)
res23:java.util.UUID=00000153-3823-9fa6-0000-000b8000aa0c

为什么不简单地将它们散列在一起?UUID通常在每次生成时都是随机的。是否有一种基于散列值创建UUID的方法?