• 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!
  • 相关阅读:
    牛客-DongDong数颜色 及其相似题
    设置某个exe文件为启动项
    oracle nvl nvl2 decode
    oracle 查看表空间名称大小以及物理路径
    oracle cmd导入、导出dup文件
    div模拟弹框窗口
    token工具类
    转 nginx报502 bad GateWay错误的解决方法
    转 Nginx connect() failed (110: Connection timed out)
    转 Cannot assign requested address出现的原因及解决方案
  • 原文地址:https://www.cnblogs.com/apimhnkj/p/11684698.html
Copyright © 2020-2023  润新知