• 【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

  • 相关阅读:
    MSIL实用指南-数据类型转换
    MSIL实用指南-类相关生成
    MSIL实用指南-方法的调用
    MSIL实用指南-struct的生成和操作
    MSIL实用指南-闭包的生成和调用
    Jenkins+maven+gitlab自动化部署之用户权限管理(八)
    Jenkins+maven+gitlab自动化部署之docker发布sprint boot项目(七)
    Centos7部署node
    Jenkins+maven+gitlab自动化部署之前端构建发布(六)
    Jenkins+maven+gitlab自动化部署之构建Java应用(五)
  • 原文地址:https://www.cnblogs.com/guweiwei/p/6515273.html
Copyright © 2020-2023  润新知