过滤数百万个字符串并保留唯一的字符串Objective-C

时间:2015-02-03 08:50:25

标签: objective-c nsarray nsset

我有200个txt文件中的大量字符串,我正在尝试过滤并保留唯一的字符串。我正在考虑使用NSSet,但问题是初始文件中有3亿个字符串,我无法将它们全部加载到NSSet中,因为它初始化很长时间。

任何人都可以建议一个更好的方法或解决方法,这可以帮助我解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

这是一种内存和CPU消耗成本低的解决方案:

您可以使用sqlite数据库:创建一个表,其中一个列字符串作为唯一键,将接收您正在解析的每个字符串。

在插入每个字符串期间,如果字符串已经在表格中,则不会插入该字符串,最后该表格将只包含唯一字符串。

制作代码,以便在插入失败时插入字符串,因为已存在的字符串(重复键)

编辑:在此列上添加索引,因为您的需求涉及大量条目

答案 1 :(得分:0)

也许您可以将独特的内容保留在内存中。只要您解析文件,就可以将每个被处理的字符串与唯一数组中的字符串进行比较,如果没有匹配则将其添加到数组中。但也许这不是一个非常好的解决方案,因为如果你有很多独特的字符串,这可能导致许多比较,这也可能需要一些时间。
但是试一试,测量执行时间,看看这是否适合你的情况。