0

我遇到了字符串问题。我有很多(可以说是 100 多个)带有字符串的二维数组。我将需要通过它们搜索匹配字符串的出现(通过搜索栏输入)。如果出现任何情况,则必须在表格视图中显示包含匹配字符串的行。对于搜索栏中输入的每个字符,必须对结果进行细化并在表格视图中显示。

必须保存所有字符串数据,并且必须打开以供以后使用。有人可以就以下事项提出建议吗?

  1. 将所有二维字符串数组保存在数据库中是否可以。(SQLite)?还是 xml 文件中的每个数组?或任何其他更好的主意?

  2. 如何有效地搜索所有字符串?我正在考虑创建一个 trie 数据结构以便更好地搜索。

谢谢!

4

1 回答 1

0

鉴于您有多达 20,000,000 个字符串,我不建议您使用 XML 作为文件格式。它会在磁盘空间和解析时间上增加很多开销。对我来说,数据库绝对是一种更好的方式。如果字符串都是最大长度,那么仅字符串就有 5GB 的数据,因此您甚至可能希望以某种方式压缩它们,具体取决于最终用户的机器。

Trie 听起来也是搜索它们的数据结构的不错选择。虽然,它会很大。它可能不需要是整个 5GB 的内存,但是有了实现它所需的各种指针和东西,它可能仍然很大。多大可能取决于字符串前缀之间的重叠量。如果数据证明太大,您可以使用紧凑的前缀树。

另一种选择是将它们全部排序并在用户键入时进行二进制搜索。但是,动态对它们进行排序可能效率不高,因此您可能希望保存字符串的预排序索引。(不确定您是否可以这样做,或者在运行应用程序时数据是否发生变化。)

于 2012-11-03T15:36:19.847 回答