entrySet与keySet的不同用法
来源:互联网 发布:java视频点播系统源码 编辑:程序博客网 时间:2024/06/06 01:13
1、基本概述
Set<Map.Entry<K,V>> entrySet() 返回此映射中包含的映射关系的 set 视图。
Set<K> keySet() 返回此映射中包含的键的 set 视图。
2、效率分析
对于keySet其实是遍历了2次,一次是转为iterator,一次就从hashmap中取出key所对于的value。而entryset只是遍历了第一次,他把key和value都放到了entry中,所以就快了。
3、使用举例
Map<String, String> maps = new HashMap<String, String>();
//方法一: 用entrySet()
Iterator<Entry<String,String>> it = maps.entrySet().iterator();
while(it.hasNext()){
Map.Entry<String,String> m = it.next();
String key = m.getKey();
String value= m.getValue();
}
// 方法二:jdk1.5支持,用entrySet()和For-Each循环()
for (Map.Entry<String, String> m : maps.entrySet()) {
String key = m.getKey();
String value= m.getValue();
}
// 方法三:用keySet()
Iterator<String> it2 = maps.keySet().iterator();
while (it2.hasNext()){
String key = it2.next();
String value= maps.get(key);
}
// 方法四:jdk1.5支持,用keySet()和For-Each循环
for(String m: maps.keySet()){
String key = m;
String value= maps.get(m);
}
foreach和while的效率几乎是差不多的,而for则相对较慢一些。foreach可以替代掉for吗?显然不是。
foreach的内部原理其实还是 Iterator,但它不能像Iterator一样可以人为的控制,而且也不能调用iterator.remove(),更不能使用下标来方便的访问元素。因此foreach这种循环一般只适合做数组的遍历,提取数据显示等,不适合用于增加删除和使用下标等复杂的操作。
- entrySet与keySet的不同用法
- HashMap的entrySet与keySet
- HashMap的entrySet与keySet
- Map的遍历:keySet与entrySet
- keyset与entryset
- keySet()与entrySet()
- keySet()与entrySet()
- keySet() 与 entrySet()
- keySet()与entrySet()
- keySet()与entrySet()
- keyset与entryset
- java keySet与entrySet
- keyset与entryset
- map的keySet entrySet
- entrySet() ,keySet()的区别
- 嵌套Map实现及keySet()与entrySet()的应用
- KeySet和EntrySet的理解
- keySet和entrySet的区别
- HBase备份
- 【Spark亚太研究院系列丛书】Spark实战高手之路-第一章 构建Spark集群(第二步)(2)
- Android实现全屏图片的欢迎界面
- VMWARE虚拟机不能上网三种方法分析
- hash表
- entrySet与keySet的不同用法
- 经典sql练习题
- Mysql数据库int(1)和tinyint(1)的区别
- oracle MERGE INTO...USING两表关联操作(效率高)
- 今天开通了属于我的博客,C#导出的代码,怎么调用?
- 最小生成树
- android开源项目和框架
- uva10160Servicing Stations
- 前端模块化开发(AMD和CDM规范)