【发布时间】:2010-06-14 13:11:32
【问题描述】:
我们需要在一个文件中读取/写入超过 1000 万个字符串。此外,我们不希望文件中有重复项。由于字符串会在读取后立即刷新到文件中,因此我们不在内存中维护它。
我们不能使用哈希码,因为哈希码中的冲突可能会导致我们错过一个重复的字符串。 我在谷歌搜索中发现了另外两种方法:
1.使用像 MD5 这样的消息摘要算法 - 但计算和存储的成本可能太高。
2.使用校验和算法。 [我不确定这是否会为字符串生成唯一键-请有人确认]
还有其他方法吗? 谢谢。
【问题讨论】:
-
创建后可以对文件进行排序和去重吗?
-
MD5 实际上是一个校验和算法。不过,两个不同的字符串可能具有相同的校验和。
-
您不会与真正的哈希码(如 SHA1 或 SHA 变体)发生冲突。 MD5 IS 是一个哈希码。校验和代码用于确保数据没有损坏,它不会帮助您获得唯一性。
标签: java key checksum hashcode message-digest