keyset与entryset

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

 

posted @ 2017-01-17 14:58  程序猿001  阅读(193)  评论(0编辑  收藏  举报