我的Android应用程序中使用了大量字符串,分为三类:1个字符串,2个字符串,3个字符串。我需要能够搜索这三个字符串列表,快速查找给定键的匹配并返回与这些字符串相关的第三个值。
例如,如果我正在寻找密钥"New York"
,我的列表是:
New York, test1
New Jersey, test2
Colorado, test3
Arkansas, test4
New York, test5
搜索会返回字符串:test1 and test5
在Android手机上存储搜索匹配项的这些字符串的最佳方法是什么?
到目前为止我想到的选项是:database,xml,csv。还有其他选择吗?这种情况的最佳选择是什么?
编辑: 如果我想保留项目的顺序以便可以在列表中上下移动,我知道Hashmap是无序的。 arraylist会工作吗?
答案 0 :(得分:1)
为什么不将它们存储为键和值列表之间的Map,并使用Android中的内置SQLLite数据库将它们永久保存在那里?
基本上,您可以使用:
而不是列表New York: [test1, test5]
New Jersey: test2
Colorado: test3
Arkansas: test4
保持纽约的独特性,您将获得更快的结果。在传统的DB意义上,它将是您的价值观的外键。
答案 1 :(得分:1)
最好和最快的方法是使用数据库。使用SQLite存储和搜索数据库中的数据。
请参阅:http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html
答案 2 :(得分:1)
解析文件,使用,
作为分隔符拆分每一行。创建哈希表(java.util.Map
的实现之一)并将解析后的结果放在那里,以便New York
是一个键,test1
,test5
等是存储在列表中的值:
Map<String, Collection<String>> map = new HashMap<>();
现在您可以直接访问此表,并且始终可以找到任何城市的映射。