android 变量Map集合
来源:互联网 发布:照片数字识别软件 编辑:程序博客网 时间:2024/06/10 05:34
今天,简单讲讲android如何遍历Map集合。
这个其实很简单,但是之前忘记了,查找资料才记起的,所以记录一下。
以下是map遍历的四种方式:
// 一、推荐只用value的时候用,都懂的。。。 // Map.values()遍历所有的value,不遍历key for (String v : map.values()) { System.out.println("value= " + v); }
// 二、取二次值,先取key再取value,建议只需要用key的时候使用,节省时间、空间 // keySet遍历key和value for (String key : map.keySet()) { System.out.println("key= "+ key + " and value= " + map.get(key)); }
// 三、取一次值,一次把key和value全部取出 // entrySet使用iterator遍历key和value Iterator<Map.Entry<String, String>> it = map.entrySet().iterator(); while (it.hasNext()) { Map.Entry<String, String> entry = it.next(); System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue()); }
// 四、推荐,尤其是容量大时,TreeMap尤其推荐 // entrySet遍历key和value for (Map.Entry<String, String> entry : map.entrySet()) { System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue()); }
五.不使用泛型:
Map map = new HashMap();Iterator entries = map.entrySet().iterator();while (entries.hasNext()) { Map.Entry entry = (Map.Entry) entries.next(); Integer key = (Integer)entry.getKey(); Integer value = (Integer)entry.getValue(); System.out.println("Key = " + key + ", Value = " + value);}
通过键找值遍历(效率低)
Map<Integer, Integer> map = new HashMap<Integer, Integer>();for (Integer key : map.keySet()) { Integer value = map.get(key); System.out.println("Key = " + key + ", Value = " + value);}
作为方法一的替代,这个代码看上去更加干净;但实际上它相当慢且无效率。因为从键取值是耗时的操作(与方法一相比,在不同的Map实现中该方法慢了20%~200%)。如果你安装了FindBugs,它会做出检查并警告你关于哪些是低效率的遍历。所以尽量避免使用。
3. 结论
3.1 如果你使用HashMap
同时遍历key和value时,keySet与entrySet方法的性能差异取决于key的具体情况,如复杂度(复杂对象)、离散度、冲突率等。换言之,取决于HashMap查找value的开销。entrySet一次性取出所有key和value的操作是有性能开销的,当这个损失小于HashMap查找value的开销时,entrySet的性能优势就会体现出来。例如上述对比测试中,当key是最简单的数值字符串时,keySet可能反而会更高效,耗时比entrySet少10%。总体来说还是推荐使用entrySet。因为当key很简单时,其性能或许会略低于keySet,但却是可控的;而随着key的复杂化,entrySet的优势将会明显体现出来。当然,我们可以根据实际情况进行选择
只遍历key时,keySet方法更为合适,因为entrySet将无用的value也给取出来了,浪费了性能和空间。在上述测试结果中,keySet比entrySet方法耗时少23%。
只遍历value时,使用vlaues方法是最佳选择,entrySet会略好于keySet方法。
这里是从网上找到的资料,有兴趣的可以自己去查找别人的资料。
android 变量Map集合就讲完了。
就这么简单。
- android 变量Map集合
- JSTL标签变量Map集合
- android Map集合的遍历
- Android遍历数组、集合和Map
- Map 集合
- Map集合
- Map集合
- map集合
- Map集合
- map集合
- Map集合
- Map集合
- Map集合
- Map集合
- Map集合
- map集合
- Map集合
- Map集合
- 第八周实践项目10 稀疏矩阵的十字链表表示
- 深入理解 Java 反射:Field (成员变量)
- win32开发(简单绘图)
- Linux中的存储设备共享之target
- 从e.target === e.currentTarget看js事件模型以及Jquery的坑
- android 变量Map集合
- openCV 2.2 正态贝叶斯分类器 CvNormalBayesClassifier 类源码解析
- 找亲密对数
- 【web开发】解决Sublime text3中文显示乱码问题
- 玩转Android monkey之多参数实战
- Gradle之EclipseのGradle插件安装-yellowcong
- 欢迎使用CSDN-markdown编辑器
- Menu 和 context上下文的的理解
- 修改应用中文名,图标