删除文件中的重复数据

时间:2011-05-22 16:28:35

标签: java search duplicate-data

我遇到了一个算法问题。你们,伙计们,帮助我吗?

我有一个巨大的文件,因此无法立即加载。存在重复数据(通用数据,可能是字符串)。我需要删除重复项。

4 个答案:

答案 0 :(得分:2)

一个简单但缓慢的解决方案是在HashSet中读取1st Gigabite。读取文件的顺序其余部分并删除文件中的双重字符串。比在内存(hashset)中读取第二个gigabite并再次删除文件中的双重文件,然后再次... 它很容易编程,如果你只想做一次它就足够了。

答案 1 :(得分:1)

您可以计算每条记录的哈希值,并将其保存在Map>

读取构建地图的文件,如果您发现地图中存在HashKey,您会寻找位置进行双重检查(如果不相等则将位置添加到映射集)

答案 2 :(得分:0)

第二种解决方案:

  1. 创建新文件,您可以在其中编写对< String,原始文件中的位置>
  2. 你将根据字符串对大文件使用经典排序(排序大文件=在内存中排序文件的小部分,然后将它们合并在一起) - 在此期间你将删除重复文件
  3. 除了重建原始订单=您将再次对其进行排序,但根据“原始档案中的位置”

答案 3 :(得分:0)

取决于输入在文件中的放置方式;如果每一行都可以用行数据表示;

另一种方法是使用数据库服务器,将数据插入具有唯一值列的数据库表,从文件读取并插入数据库。最后,数据库将包含所有唯一的行/行。