我有一个包含两列的大型CSV文件(8000行)。第一列是1到10000之间的整数,第二列是6到10个字符的字符串。因为我的实现是在Android中,所以我使用AssetManager访问该文件,所以我必须使用InputStream来读取文件。
系统的输入是1到10000的整数,输出是相应的字符串,如果没有整数匹配则为null。该应用程序的一般用例涉及多个(约4个)此类请求,每个请求在我当前的实现中冻结应用程序2-3秒。
我希望能够使用电话簿(即O(log(n))时间搜索有效地进行搜索,而不将整个文件存储在内存中。我假设我应该将文件从CSV重新格式化为其他东西......也许是SQL数据库?对于这种情况,适当的实施是什么?
我完全不熟悉大规模的数据访问,说实话,我的心理模型是如何以及何时将文件加载到内存中并在Android上访问的模型有点模糊。提前谢谢。
答案 0 :(得分:2)
我建议将csv文件导入SqLite数据库。以下是有关如何执行此操作的链接:SqLite3 CSV这是一个关于在Android上使用SqLite的优秀教程:Android SQLite Database and ContentProvider - Tutorial
答案 1 :(得分:1)
是的,它会的。您可以将其保存到内部存储器或SD卡中。我还建议您将数据迁移到SQLite。我一直在检查这个链接,看起来真的很棒。