存储和搜索大键值,值的最佳方式

时间:2016-12-06 18:48:48

标签: java android hashmap

我要为android项目创建一个java类,根据电话代码给出数字并返回区域名称(用于本地使用)

我们的电话号码长度介于8到10之间,区域代码长度为4或5。

  1. 什么是存储区域代码的最佳方式? HashMap<Integer, String>是否适合这个原因<region code, region name>? (每个城市的数据可能超过200条记录)

  2. 搜索此内容的最佳方法是什么?正如我之前所说的区域代码长度可以是4或5,那么我们应该在第一次搜索4位数之间然后如果没有任何结果搜索5位数?

2 个答案:

答案 0 :(得分:1)

呀。您可以使用HashMap存储数据。 在使用HashMap的keySet()方法存储数据之后,您将获得所有键的列表作为排序(升序)集。

之后使用Set的contains()方法,您将知道区域代码是否存在而不管4位或5位数(如果返回false则可以尝试前4位数,那么您可以尝试5位数)。< / p>

通过向地图提交该密钥(地区代码),您可以轻松获得地区名称。

答案 1 :(得分:1)

使用hashmap将是您最好的选择。它的运行时间为O(1),因此在搜索密钥时,您可以执行以下操作:

HashMap<String, Integer> hm = new HashMap<String, Integer>();
hm.put("yourKey", 12345);
...//repeat as needed
hm.get("yourKey");

这将是获得价值的最快捷方式。如果值存在,则返回映射值,否则如果没有映射则返回null。密钥的长度无关紧要。