gpt4 book ai didi

java - 在java中为字符串构造一个唯一的数字

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:48:05 26 4
gpt4 key购买 nike

我们有一个需求,要在一个文件中读取/写入超过 1000 万个字符串。我们也不希望文件中有重复项。由于字符串在读取后会立即刷新到文件中,因此我们不会在内存中维护它。

我们不能使用哈希码,因为哈希码中存在冲突,我们可能会错过重复的字符串。我在谷歌搜索中发现的另外两种方法:

1.使用像 MD5 这样的消息摘要算法 - 但计算和存储的成本可能太高。

2.使用校验和算法。 [我不确定这是否会为字符串生成唯一键 - 有人可以确认]

还有其他方法吗?谢谢。

最佳答案

如果您可以接受微小的碰撞风险,您可以按照您的建议使用一些散列函数,例如 MD5,并依赖于散列。

另一种可能占用更大内存的替代方法是将已经遇到的字符串存储在 trie 中。 (一种特殊类型的树)。


更新:另一种选择是使用 Bloom filter .然而,这仍然依赖于散列,但可以调整为具有任意小的冲突概率。

关于java - 在java中为字符串构造一个唯一的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3037440/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com