用于生成唯一ID的哈希算法?

时间:2015-05-21 08:01:10

标签: java hash hash-collision

我有以下属性的对象:

class MyObject
{
    int sourceId();
    String id();
}

如果我使用id作为标识符,则可能会发生冲突,因为可能存在具有相同id但不同sourceId的记录

因此,我正在研究生成sourceIdid的哈希,并使用它来为每条记录生成唯一ID。我想的只是md5ing String.valueOf(sourceId + id),但似乎md5碰撞并不像我想的那样罕见。

为此建议使用哪种其他算法,这会产生快速哈希值,并且碰撞也很不可能发生?

2 个答案:

答案 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("-");

获取原始值