zoukankan      html  css  js  c++  java
  • Java中遍历Map的几种方式

    首先初始化一个全局 map

    public static Map<String, String> map = new HashMap<String, String>() {
        private static final long serialVersionUID = 1L;
            {
                put("name", "test");
                put("gender", "man");
                put("country", "China");
            }
    }
    @BeforeClass
    public void initMap() {
        System.out.println(map);    // {country=China, gender=man, name=test}
    }
    @AfterClass
    public void clearMap() {
        map.clear();
        System.out.println(map);    // {}
    }
    

    遍历 keySet

    @Test
    public readKeys() {
        System.out.println(map.keySet());   // [country, gender, name]
        for(String key : map.keySet()) {
            System.out.println(key + ":" + map.get(key));   
            // country:China
            // gender:man
            // name:test
        }
    }
    

    遍历 values

    @Test
    public readValues() {
        System.out.println(map.values());   // [China, man, test]
        for(String val : map.values()) {
            System.out.println(val);
            // China
            // man
            // test
        }
    }
    

    遍历 entrySet (iterator遍历)

    Iterator遍历优势:在用foreach只能实现遍历而不能进行删除操作,使用Iterator可以通过remove方法删除元素

    @Test
    public readEntrys() {
        System.out.println(map.entrySet());   // [country=China, gender=man, name=test]
        Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
        while(it.hasNext()) {
            Map.Entry<String, String> entry = it.next();
            System.out.println(entry.getKey() + ":" + entry.getValue());
            // country:China
            // gender:man
            // name:test
            
            //it.remove();
        }
    }
    

    forEach 结合 Lambda(需java8以上) 遍历 key,value

    @Test
    public readLambda() {
        map.forEach((key, value) -> {
            System.out.println(key + ":" + value);
            // country:China
            // gender:man
            // name:test
        });
    }
    

    操作建议

    • 单纯获取key或者value,推荐使用keySe/values
    • 获取entry推荐使用entrySet
    • 遍历过程中需要删除元素推荐使用Iterator
    • 遍历过程中增加元素,可以新建一个临时map存放新增的元素,等遍历完毕,再把临时map放到原来的map中
    HAVE A NICE DAY!
  • 相关阅读:
    打卡规则小模块设计
    json和ajax学习
    求两个数的百分比&时间格式化&ajax返回json
    spring security运行流程图(转)
    DelegatingFilterProxy作用浅析
    网站URL重写(Java UrlRewrite 的使用)
    JVM的常用的调优策略和垃圾回收算法及Tomcat的常用调优参数
    JQuery 的Ajax的使用
    servlet程序HTTP Status 500
    CanvasRenderingContext2D.drawImage()无效,not working
  • 原文地址:https://www.cnblogs.com/apimhnkj/p/11684698.html
Copyright © 2011-2022 走看看