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



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

任何人都可以提出更好的方法或解决方法来帮助我解决这个问题吗?

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

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

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

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

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

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

最新更新