【发布时间】:2015-08-02 14:25:05
【问题描述】:
我正在尝试开发一个可以解析文件(即逗号、制表符分隔)并查找重复条目的应用程序。重复的条目需要写入单独的文件,原始输入文件保持原样。我遇到的问题是我无法决定如何实际找到这些匹配项?
假设数据如下:
id,Firstname,Lastname,Address,Country
1,James,Michael,123 St,USA
2,James,Michae l,123 St,AU
3,Steve,Smith,12445,UK
*规则是只有当firstname,lastname,address匹配时才认为两条记录是重复的(记住算法中不能考虑空格)
这是我正在努力解决的问题
- 如果我使用类似 sqlite 的东西然后查询重复项而不是使用应用程序的本机语言(即 c++、java、python),这有什么不同吗?
- 鉴于记录数量可能在 1000-1000000 之间,可以使用哪些数据结构、函数等来减少执行时间?
感谢您的建议
【问题讨论】:
-
问题 2“有哪些方法...”和问题 3 在这里不合适。他们太宽泛,太健谈了。你能edit你的问题,让它提出一个清晰、具体的问题,并得到正确答案吗?
-
回应#2:您可以尝试使用哈希表来存储对条目的引用。这样,您可以简单地计算每个条目的哈希值,根据哈希值在哈希表中存储对相应条目的引用,并在与您计算的哈希值匹配的条目中查找每个条目的匹配项。这应该会大大减少计算时间,因为您不会尝试将每个条目与其他每个条目进行比较。 Hash functions in c++ 和 hash tables in c++
-
@DrewDormann 更新了问题,现在更清楚了吗?
标签: java c++ mysql database sqlite