在java中为字符串构造唯一的数字
发布时间:2020-12-14 23:47:28 所属栏目:Java 来源:网络整理
导读:我们要求在文件中读/写超过1000万个字符串.此外,我们不希望文件中有重复项.由于字符串在读取后会立即刷新到文件中,因此我们不会将其保留在内存中. 我们不能使用哈希码,因为哈希码中的冲突导致我们可能会错过字符串作为重复. 我在谷歌搜索中找到的另外两种方
我们要求在文件中读/写超过1000万个字符串.此外,我们不希望文件中有重复项.由于字符串在读取后会立即刷新到文件中,因此我们不会将其保留在内存中.
我们不能使用哈希码,因为哈希码中的冲突导致我们可能会错过字符串作为重复. 1.使用消息摘要算法,如MD5 – 但计算和存储可能成本太高. 2.使用校验和算法. [我不确定这是否会产生一个字符串的唯一键 – 有人可以确认] 是否有任何其他方法可用. 解决方法
如果您对显微镜冲突的风险感到满意,可以按照建议使用一些哈希函数,例如MD5,并依赖哈希值.
另一种可能具有更大内存占用的替代方案是将已经遇到的字符串存储在trie(一种特殊类型的树)中. 更新:另一个替代方案是使用Bloom filter.然而,这仍然依赖于散列,但可以调整为具有任意小的碰撞概率. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |