zoukankan      html  css  js  c++  java
  • Map的迭代


    迭代的方法有:
       keySet()
       values()
       entrySet()

    1  集合遍历方法一:keySet() 

      结果:把Map集合中的所有键都保存到一个Set类型的集合对象中返回

    1 Set<String> keys = map.keySet();
    2     Iterator<String> it = keys.iterator();
    3     while(it.hasNext()){
    4         String key = it.next();
    5         System.out.println("键: " + key + "   值: " + map.get(key));
    6     }

    缺点:只是返回了键,没有值。(即使 map.get(key) 给出了对应的值,但是该方法属于 Map ,不是 keySet 的)

    思考:为什么要返回此映射中包含的键的 Set 视图?

      因为 key 不可重复!

    2 集合遍历方法二:values() 

      结果:把所有的值存储到一个Collection集合中返回

    1 Collection<String> keys = map.values();
    2     Iterator<String> it = keys.iterator();
    3     while(it.hasNext()){
    4         System.out.println("值:"+ it.next());
    5     }

    缺点:只能返回集合中所有的值,没有键。

    思考:能不能像方法一一样通过 get 方法得到对应的键?

      不能,只能通过键得到值,不能反过来。

    3 集合遍历方法三:entrySet()

    结果:返回此映射中包含的映射关系的 Set 视图

    1 Set<Map.Entry<String, String>> entrys = map.entrySet();
    2     Iterator<Map.Entry<String,String>> it = entrys.iterator();
    3     while(it.hasNext()){
    4         Map.Entry<String, String> entry = it.next();
    5         System.out.println("键: " + entry.getKey() + "   值: " + entry.getValue());
    6     }

    思考:程序中 Entry<String, String> 写成这样也对,为什么要写成 Map.Entry<String, String> ?

      Entry 是 Map 的一个内部类,习惯上这样写。

    推荐:entrySet()

    示例 :

     1 public class Demo2 {
     2     public static void main(String[] args) {
     3         Map<String, String> map = new HashMap<String, String>();
     4         //添加方法
     5         map.put("汪峰", "章子怡");
     6         map.put("文章", "马伊琍");
     7         map.put("谢霆锋","张柏芝");
     8         map.put("成龙", "林凤娇");
     9         
    10         //集合遍历方法一:keySet()  
    11         //缺点:把Map集合中的所有键都保存到一个Set类型的集合对象中返回,所以只是返回了键,没有值
    12     /*    Set<String> keys = map.keySet();
    13         Iterator<String> it = keys.iterator();
    14         while(it.hasNext()){
    15             String key = it.next();
    16             System.out.println("键: " + key + "   值: " + map.get(key));
    17         }*/
    18         
    19         
    20         //集合遍历方法二:values() 
    21         //缺点:values() 把所有的值存储到一个Collection集合中返回,所以values方法只能返回集合中所有的值,没有键
    22         /*Collection<String> keys = map.values();
    23         Iterator<String> it = keys.iterator();
    24         while(it.hasNext()){
    25             System.out.println("值:"+ it.next());
    26         }*/
    27         
    28         
    29         //集合遍历方法三: entrySet() 
    30         Set<Map.Entry<String, String>> entrys = map.entrySet();
    31         Iterator<Map.Entry<String,String>> it = entrys.iterator();
    32         while(it.hasNext()){
    33             Map.Entry<String, String> entry = it.next();
    34             System.out.println("键: " + entry.getKey() + "   值: " + entry.getValue());
    35         }
  • 相关阅读:
    async await 死锁简单分析
    如何在Linux上安装Git Server
    Winform业务层如何调用UI层的代码
    Git是怎么Ignore文件的?
    使用委托把方法写得更容易维护
    我们检测到您的浏览器不兼容传输层安全协议 (TLS) 1.1 或更高版本,此协议在 Internet 上用于确保您通信的安全性。
    【腾讯bugly干货】QQ空间直播秒开优化实践
    【腾讯bugly干货分享】Android自绘动画实现与优化实战——以Tencent OS录音机波形动
    【腾许Bugly干货分享】“HTTPS”安全在哪里?
    【腾讯优测干货】看腾讯的技术大牛如何将Crash率从2.2%降至0.2%?
  • 原文地址:https://www.cnblogs.com/shadowdoor/p/6821343.html
Copyright © 2011-2022 走看看