kik*_*iki 6 java android listview hashmap switch-statement
有人告诉我,哈希图很慢.所以我只是想知道是使用hashmap还是switch case逻辑.
我的要求就是这个.我有一组CountryNames和CountryCodes.我的ListView显示国家/地区的名称.单击国家/地区名称项时,我必须Toast the CountryCode.
在这种情况下,我应该维护CountryNames和代码的HashMap并访问它以获取相应的代码吗?:
myMap.put("US", 355);
myMap.put("UK", 459);
//etc
Run Code Online (Sandbox Code Playgroud)
或者编写一个这样的开关盒更好
switch (vCountryNamePos):
{
case 0: //US
vCountryCode = 355;
break;
case 1: //UK
vCountryCode = 459;
break;
//etc
}
Run Code Online (Sandbox Code Playgroud)
哪个更快?如果不是Hashmaps,那么在什么实际情况下会使用Map?
-Kiki
Jea*_*ean 14
对于两个值,开关将更快.一个hashmap总是至少检查你的密钥是否相等,所以它不能超过一两个.equals()测试.
对于许多值,哈希将更快.交换机必须测试每个值,直到找到正确的值.
对于少量值(例如最多10个左右),更喜欢开关.它会更轻,更快.
对于大量值(大于50),更喜欢哈希.哈希不必检查所有值,因此当值的数量增加时,它将比切换更快.对于10~50个值,我建议你做你认为更具可读性的东西,因为性能会相似.
现在,如果您正在研究编译时已知的静态字符串的极端性能,您可以查看代码生成工具,如gnuperf.
如果你在编译时不知道你的字符串,但是你知道它们的长度可以很短且体积一致,或者使用共同的前缀,那么你可能会使用Trie数据结构最快.
如果你想在大量非常异构的字符串或者可能不是字符串的对象上保持性能,那么HashMap就是最佳选择.当物体数量非常高(数十亿或更多)时,它几乎是无与伦比的.
| 归档时间: |
|
| 查看次数: |
9374 次 |
| 最近记录: |