【发布时间】:2012-12-31 15:38:41
【问题描述】:
为了避免任何混淆,我正在根据我对哈希算法的研究重新构建我的问题
问题陈述 我有多个包含可变长度数据记录的文本文件。我需要查找输入中是否有重复记录。每个文本文件都可能有数百万的数据记录。
由于我无法一次将所有数据加载到内存中,因此我计划在处理记录时创建记录中关键字段的哈希。处理记录意味着验证、过滤和转换它。在处理完所有文本文件中的所有记录后,将它们合并以创建整个输入的一个视图(文本文件或数据库表)。
如果为所有记录生成哈希值,查找重复项会快得多。如果哈希值发生冲突,则只能检查那些记录是否相等(假设哈希算法是确定性的)
问题 - 对于此类输入(即可变长度数据),我应该考虑哪些哈希算法?
【问题讨论】:
-
在 unix 中你会做
cat $files | sort | uniq -c会给你跨多个文件的每一行的计数。您可以对其进行解析以获取重复项。 -
我不认为完美的散列是解决方案。构建一个完美的哈希本身需要访问所有字符串,并且可能比检测重复项需要更多的工作。
标签: java algorithm hash text-files