Java 存储和搜索大量字符串的最有效方法

Java 存储和搜索大量字符串的最有效方法,java,android,Java,Android,我在Android应用程序中使用了大量字符串,这些字符串分为三类:1个单词字符串、2个单词字符串和3个单词字符串。我需要能够搜索这三个字符串列表,快速查找与给定键的匹配项,并返回与这些字符串关联的第三个值 例如,如果我正在寻找键“newyork”,我的列表是: New York, test1 New Jersey, test2 Colorado, test3 Arkansas, test4 New York, test5 搜索将返回字符串:test1和test5 存储这些字符串的最佳方式是什么

我在Android应用程序中使用了大量字符串,这些字符串分为三类:1个单词字符串、2个单词字符串和3个单词字符串。我需要能够搜索这三个字符串列表,快速查找与给定键的匹配项,并返回与这些字符串关联的第三个值

例如,如果我正在寻找键
“newyork”
,我的列表是:

New York, test1
New Jersey, test2
Colorado, test3
Arkansas, test4
New York, test5
搜索将返回字符串:
test1和test5

存储这些字符串的最佳方式是什么?在android手机上搜索匹配项最快

到目前为止,我想到的选项是:数据库、xml、csv。还有其他选择吗?对于这种情况,最好的选择是什么

编辑:
如果我想保留项目的顺序,以便它们可以在列表中上移或下移,我知道Hashmap是无序的。arraylist可以工作吗?

为什么不将它们存储为键和值列表之间的映射,并使用Android中内置的SQLLite数据库将它们永久保存在那里

因此,基本上,您可以:

New York: [test1, test5]
New Jersey: test2
Colorado: test3
Arkansas: test4

保持纽约的独特性,你会更快地得到结果。在传统的数据库意义上,它将是您的值的外键。

最好且最快捷的方法是使用数据库。使用SQLite在数据库中存储和查看搜索数据


请参阅:

解析文件,使用
作为分隔符拆分每一行。创建哈希表(java.util.Map的一个实现)并将解析的结果放在那里,以便
newyork
是一个键,
test1
test5
等是存储在列表中的值:

Map Map=newhashmap()


现在,您可以直接访问此表,并且始终可以找到任何城市的地图。

当然可以跳过xml。xml和speed通常不会在同一句话中以否定的意义使用。考虑使用原生SQLite设施(例如数据库)。谢谢,我会看一看,我没有很多SQL或SQLite经验,但是我可以学习SQLite:有一个全文搜索扩展可能是有用的/当你说解析我的文件时,你是说我应该把字符串列表存储在一个CSV文件中,然后每次我在手机上启动应用程序时,都会将文件列表加载到哈希表中?每次应用程序启动时,这难道不能花费大量的时间吗?