zoukankan      html  css  js  c++  java
  • 【Java集合的详细研究4】Java中如何遍历Map对象的4种方法

    方法一 通过Map.entrySet遍历key和value,在for-each循环中使用entries来遍历.推荐,尤其是容量大时

    这是最常见的并且在大多数情况下也是最可取的遍历方式。在键值都需要时使用。

    Map<Integer, Integer> map = new HashMap<Integer, Integer>();  
      
    for (Map.Entry<Integer, Integer> entry : map.entrySet()) {  
      
        System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());  
      
    }  

    方法二、通过Map.keySet遍历key,通过键找值value遍历(效率低),普遍使用,二次取值

    Map<Integer, Integer> map = new HashMap<Integer, Integer>();  
      
    for (Integer key : map.keySet()) {  
      
        Integer value = map.get(key);  
      
        System.out.println("Key = " + key + ", Value = " + value);  
      
    }

    方法三 如果只需要map中的键或者值,你可以通过Map.keySet或Map.values来实现遍历,而不是用entrySet。在for-each循环中遍历keys或values。

    Map<Integer, Integer> map = new HashMap<Integer, Integer>();  
      
    //遍历map中的键  
      
    for (Integer key : map.keySet()) {  
      
        System.out.println("Key = " + key);  
      
    }  
      
    //遍历map中的值  
      
    for (Integer value : map.values()) {  
      
        System.out.println("Value = " + value);  
      
    }  

    方法四:通过Map.entrySet使用iterator遍历key和value

    Map<Integer, Integer> map = new HashMap<Integer, Integer>();  
      
    Iterator<Map.Entry<Integer, Integer>> entries = map.entrySet().iterator();  
      
    while (entries.hasNext()) {  
      
        Map.Entry<Integer, Integer> entry = entries.next();  
      
        System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());  
      
    }  

    全部代码:

    public static void main(String[] args) {
            init();
            traversal();
        }
    
        // HashMap按照哈希算法来存取键对象,有很好的存取性能
        private static HashMap<String, String> hMap = new HashMap<>();
    
        // TreeMap实现了SortedMap接口,能对键对象进行排序。支持自然排序和客户化排序两种方式。
        private static TreeMap<String, String> tMap = new TreeMap<>();
    
        // map的赋值
        public static void init() {
            hMap.put("1", "value1");
            hMap.put("2", "value2");
            hMap.put("3", "value3");
        }
    
        // map的遍历
        public static void traversal() {
            // 第一种:普遍使用,二次取值
            System.out.println("通过Map.keySet遍历key和value:");
            for (String key : hMap.keySet()) {
                System.out.println("key= " + key + " and value= " + hMap.get(key));
            }
    
            // 第二种
            System.out.println("通过Map.entrySet使用iterator遍历key和value:");
            Iterator<Map.Entry<String, String>> it = hMap.entrySet().iterator();
            while (it.hasNext()) {
                Map.Entry<String, String> entry = it.next();
                System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
            }
    
            // 第三种:推荐,尤其是容量大时
            System.out.println("通过Map.entrySet遍历key和value");
            for (Map.Entry<String, String> entry : hMap.entrySet()) {
                System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
            }
    
            // 第四种
            System.out.println("通过Map.values()遍历所有的value,但不能遍历key");
            for (String v : hMap.values()) {
                System.out.println("value= " + v);
            }
        }

    运行结果:

    通过Map.keySet遍历key和value:
    key= 1 and value= value1
    key= 2 and value= value2
    key= 3 and value= value3
    通过Map.entrySet使用iterator遍历key和value:
    key= 1 and value= value1
    key= 2 and value= value2
    key= 3 and value= value3
    通过Map.entrySet遍历key和value
    key= 1 and value= value1
    key= 2 and value= value2
    key= 3 and value= value3
    通过Map.values()遍历所有的value,但不能遍历key
    value= value1
    value= value2
    value= value3

  • 相关阅读:
    在页面中控制媒体流的起播点和播放长度
    缓冲区数据转换为字符串输出
    编程中注意的一个问题
    一个整合SQL语句的类
    注意服务器系统日期对防病毒软件的影响
    网络病毒源的排查(2005年3月22日维护记录)
    升级到 Microsoft .NET >Visual Basic 6.0 控件和 .NET 控件的区别
    修改您的站点设计以改善下载体验
    下一版本Windows&reg; CE 开发工具Smart Device Extensions for Microsoft Visual Studio&reg; .NET
    WINDOWS (服务器) 和 DOS(客户端) 网络互连 基于TCP/IP的编程实现
  • 原文地址:https://www.cnblogs.com/guweiwei/p/6515273.html
Copyright © 2011-2022 走看看