存储和查询大型组(10,000+)字符串的最有效方法是什么?

时间:2018-03-28 02:22:02

标签: ios swift

所以我有10,000多个字符串,我需要查询该组中是否包含任何给定的字符串。我目前只将它们存储在一个数组中,我只使用stringArray.contains(myString)功能。这有效吗?我将这个数组存储在一个单独的类和文件中,但它看起来确实很糟糕"丑陋"拥有如此庞大的阵列

3 个答案:

答案 0 :(得分:5)

如果您只需要进行contains检查,而不关心元素排序,请使用Set

let someStrings: Set = ["a", "b", "c"]
print(someStrings.contains("a"))

答案 1 :(得分:1)

您可能需要面对的更大问题是如何检索您可能想要的字符串。我建议你研究字符串中包含的三字符索引。特别是,识别字符串中出现的三个字符的所有序列,并通过它包含的最不常见的三字符索引该字符串。

你可以从你的语料库中自己构建那个频率表,或者,如果我没记错的话,你可以在网上找到三角频率的通用表,尽管我的手机里没有方便的链接。

答案 2 :(得分:0)

随着我的进步,Strings的数量超过了150万,而我并不想将它们存储在一个庞大的swift文件中。所以我为它创建了一个JSON文件,并创建了一个单例,在应用程序启动时解析了JSON中的数据。这个速度非常慢,所以我选择将它存储在我随应用程序提供的SQLite数据库中。然后我使用以下库进行搜索:

https://github.com/stephencelis/SQLite.swift