A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 高会仁 中级黑马   /  2012-12-9 02:03  /  1407 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. import java.util.HashMap;
  2. import java.util.Iterator;
  3. import java.util.Map;
  4. import java.util.Set;

  5. //map集合的两种取出方式
  6. public class MapDemo2 {

  7.         /**
  8.          * @param args
  9.          */
  10.         public static void main(String[] args) {
  11.                 Map<String, String> map = new HashMap<String, String>();
  12.                
  13.                 map.put("01", "张三");
  14.                 map.put("02", "李四");
  15.                 map.put("03", "王五");
  16.                 map.put("04", "关羽");
  17.                
  18.                 //将Map集合中的映射关系取出,存入到set集合中
  19. //                Set<Map.Entry<String, String>> entrySet = map.entrySet();
  20. //               
  21. //                Iterator<Map.Entry<String, String>> it = entrySet.iterator();
  22. //               
  23. //                while (it.hasNext()){
  24. //                        Map.Entry<String, String> me = it.next();
  25. //                        String key = me.getKey();
  26. //                        String value = me.getValue();
  27. //                        System.out.println(key+"---"+value);
  28. //                }
  29.                
  30.                 Set<String> keySet = map.keySet();
  31.                
  32.                 Iterator<String> it = keySet.iterator();
  33.                
  34.                 while(it.hasNext()){
  35.                         String key = it.next();
  36.                         String value = map.get(key);
  37.                         System.out.println(key+"---"+value);
  38.                 }
  39.                
  40.         }

  41. }
复制代码
一种是Set<k> keySet 方式,另一种是注释掉的Set<Map.Entry<k,v>> entrySet方式
我知道Set<Map.Entry<k,v>>这个方式是将map集合中的映射关系存入到了set集合中。但以上程序两种方式所得结果一样,我就不知道,什么时候该用Set<k> keySet 方式,什么时候该用Set<Map.Entry<k,v>> entrySet方式???

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

4 个回复

倒序浏览
求哪位大神回答下、、、{:soso_e101:}
回复 使用道具 举报
按效率分析

对于keySet其实是遍历了2次,一次是转为iterator,一次就从hashmap中取出key所对于的value。而entryset只是遍历了第一次,他把key和value都放到了entry中,所以就快了。

回复 使用道具 举报
这个问题,我通俗的说下吧!你可以把键key和值value理解为夫妻中丈夫和妻子。对于Set<k> keySet 方式:就相当于在集合中丈夫key先出现,然后key会自己找他们对应的value;而Set<Map.Entry<k,v>>方式:可以把丈夫和妻子放在一张结婚证上,他们在集合中是成对出现的。希望我这么说有助于理解

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
谢谢王同学的回答,很形象。懂了不少{:soso_e113:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马