如何索引将(大部分)连续整数映射到字符串的CSV文件,以便我可以在Java中有效地搜索它?

时间:2013-05-14 23:04:26

标签: java android database csv

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

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

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

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

2 个答案:

答案 0 :(得分:2)

我建议将csv文件导入SqLite数据库。以下是有关如何执行此操作的链接:SqLite3 CSV这是一个关于在Android上使用SqLite的优秀教程:Android SQLite Database and ContentProvider - Tutorial

答案 1 :(得分:1)

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