我有一个包含两列的大型CSV文件(8000行)。第一列是从1到10000的整数,第二列是6到10个字符的字符串。因为我的实现是在Android中实现的,所以我使用AssetManager访问文件,所以我必须使用InputStream来读取文件。
系统的输入是从1到10000的整数,输出是相应的字符串,如果没有匹配的整数,则输出为null。应用程序的一般用例涉及多个(~4)这样的请求,在我当前的实现中,每个请求都会冻结应用程序2-3秒。
我希望能够高效地执行此搜索,使用电话簿(即O(log(n))时间)搜索,而无需将整个文件存储在内存中。我假设我应该将文件从CSV重新格式化为其他格式...也许是SQL数据库?对于这种情况,合适的实现是什么?
我完全不熟悉大规模的数据访问,老实说,我对如何以及何时将文件加载到内存中并在Android上访问文件的心理模型有点模糊。提前谢谢。
发布于 2013-05-15 07:14:26
我建议将csv文件导入到SqLite数据库中。这里有一个关于如何做到这一点的链接:SqLite3 CSV,这里有一个关于在安卓中使用SqLite的很好的教程:Android SQLite Database and ContentProvider - Tutorial
发布于 2013-05-15 07:49:19
是的,它会的。您可以将其保存到内部存储器或SD卡中。我还建议您将数据迁移到SQLite。我一直在检查这个链接,看起来真的很棒。
https://stackoverflow.com/questions/16554213
复制相似问题