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); }
keySet()取值方式示例图:
entrySet()取值方式示例图: