1

我有一个包含两列的大型 CSV 文件(8000 行)。第一列是1~10000的整数,第二列是6~10个字符的字符串。因为我的实现是在 Android 中,我使用 AssetManager 访问文件,所以我必须使用 InputStream 从文件中读取。

系统的输入是从 1 到 10000 的整数,输出是相应的字符串,如果没有整数匹配,则为 null。该应用程序的一般用例涉及多个(约 4 个)这样的请求,在我当前的实现下,每个请求都会将应用程序冻结 2-3 秒。

我希望能够使用电话簿(即 O(log(n)) 时间)搜索有效地进行此搜索,而无需将整个文件存储在内存中。我假设我应该将文件从 CSV 重新格式化为其他格式……也许是 SQL 数据库?对于这种情况,合适的实现是什么?

我对大规模数据访问完全不熟悉,老实说,我对文件如何以及何时加载到内存并在 Android 上访问的心理模型有点模糊。提前致谢。

4

2 回答 2

2

我建议将 csv 文件导入 SqLite 数据库。这是一个关于如何做到这一点的链接:SqLite3 CSV,这里是一个关于在 Android 中使用 SqLite 的优秀教程:Android SQLite Database and ContentProvider - Tutorial

于 2013-05-14T23:14:26.000 回答
1

是的,它会的。您可以将其保存到内部存储器或 SD 卡中。我还建议您将数据迁移到 SQLite。我一直在检查那个链接,看起来真的很棒。

于 2013-05-14T23:49:18.703 回答