如何索引将连续整数映射到字符串的CSV文件,以便在Java中高效搜索?

如何索引将连续整数映射到字符串的CSV文件,以便在Java中高效搜索?,java,android,database,csv,Java,Android,Database,Csv,我有一个由两列组成的大型CSV文件(8000行)。第一列是1到10000之间的整数,第二列是6到10个字符的字符串。因为我的实现是在Android中,所以我使用AssetManager访问文件,所以我必须使用InputStream来读取文件 系统的输入是1到10000之间的整数,输出是相应的字符串,如果没有整数匹配,则为null。应用程序的一般用例涉及多个(约4个)这样的请求,在我当前的实现中,每个请求都会将应用程序冻结2-3秒 我希望能够使用电话簿(即O(log(n))time)搜索高效地执行

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

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

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


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

我建议将csv文件导入SqLite数据库。这里有一个关于如何做到这一点的链接:这里有一个关于在Android中使用SqLite的优秀教程:

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

太酷了!非常感谢你的链接-它看起来正是我所需要的。然后,数据库是否会作为普通文件打包到Android资产文件夹中?这可能是您需要的: