有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

将一对(字符串,long)散列为一个长Java

我正在构建一个简单的版本化键值存储,在这里我需要 通过指定(密钥、版本)对来访问记录。最新版本的商店 指向它们以前版本的指针(ak,它们将索引存储到hashmap中)

为了保持记录的大小较小,我将密钥、版本对散列为一个长, 然后将其存储并用作索引

我当前使用的实现是附加密钥和版本(密钥) 限制为字母),并使用本机hashcode()函数。 在每次放置之前,我测试碰撞(ak,条目是否已经存在,如果存在, 它是否有相同的密钥(id对),我经常观察这些。这现实吗? 我的空间大约有一百万个条目。我最初的假设是,这导致碰撞非常罕见。但我错了

你有其他的解决方案吗(一个可以将哈希值保持在64位,2^64比1m大很多的解决方案)。我希望尽可能避免SHA/MD5的大小开销

密钥是随机生成的长度为16个字符的字符串 版本较长,范围从0到100000


共 (0) 个答案