我需要生成一个哈希值,用于 Java 中数十亿条记录的唯一性。问题是,我只有 16 个数字可以玩。在研究这个问题时,我发现了 32 位哈希算法,它返回 Java 整数。但这太小了,因为它的范围只有+/- 20亿,而且还有更多的记录。我无法使用 64 位哈希,因为这会给我返回太大的数值(+/4 quintillion,或 19 位数字)。问题是,我正在处理一个遗留系统,它迫使我使用 16 位数字的静态 key 长度。
建议?我知道没有哈希函数可以保证唯一性,但我需要一个好的哈希函数来满足这些限制。
谢谢
最佳答案
如果您生成的哈希太大,您可以使用 key 空间最大值对其进行修改以使其适合。
myhash = hash64bitvalue % 10^16
关于java - 好的哈希函数? (32位太小,64位太大),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5566273/