我有以下属性的对象:
class MyObject
{
int sourceId();
String id();
}
如果我使用id
作为标识符,则可能会发生冲突,因为可能存在具有相同id
但不同sourceId
的记录
因此,我正在研究生成sourceId
和id
的哈希,并使用它来为每条记录生成唯一ID。我想的只是md5ing String.valueOf(sourceId + id)
,但似乎md5碰撞并不像我想的那样罕见。
为此建议使用哪种其他算法,这会产生快速哈希值,并且碰撞也很不可能发生?
答案 0 :(得分:3)
如果id()
字符串具有固定长度,您可以简单地连接sourceId和Id:
public String getUniqueID ()
{
return sourceID() + id();
}
如果id()
没有固定长度,您可以用零填充(例如)以获得固定长度,然后像以前一样将其连接到sourceID()
。
答案 1 :(得分:1)
假设这个值可以是一个字符串,我只是用连字符连接两个值:
class MyObject
{
int sourceId;
String id;
String getUniqueKey() {
return sourceId+"-"+id;
}
}
然后,您可以使用value.split("-");