java 遍历Map 的五种方法

遍历Map的方法, 我总结了5种, CoreJava中给出的是第一种使用forEach+lambda表达式, 我认为这种方法应该是最好的, 但是只能在Java8之后的版本使用;

建议优先使用第一种和第四种(类似第二种);

遍历Map:

第一种可以使用Map的forEach方法加上Java8的lambda表达式:

Java遍历Map的五种方法(Java8中新lambda方法)

第二种可以使用Map.Entry来遍历Map的条目:

Java遍历Map的五种方法(Java8中新lambda方法)

第三种可以使用for结合Map的keySet和values方法来遍历:

Java遍历Map的五种方法(Java8中新lambda方法)

第四种是使用迭代器, 这种是看起来比较熟悉而且效率挺高的, 但是要注意, 不能在使用for循环访问迭代器的同时使用remove操作, javadoc说这样会发生不可预期的错误, 如果希望迭代的同时删除元素, 可以使用while来遍历:

Java遍历Map的五种方法(Java8中新lambda方法)

当然还有第五种是在遍历keySet的时候调用get方法获取对应的值, 但是这种方法太捞了, 效率很低, 不提了, 就上一段测试代码吧:

Java遍历Map的五种方法(Java8中新lambda方法)

测试代码如下:

Java遍历Map的五种方法(Java8中新lambda方法)

输出如下:

Java遍历Map的五种方法(Java8中新lambda方法)

贴一些map和sortedmap的常用方法:

Java遍历Map的五种方法(Java8中新lambda方法)

Java遍历Map的五种方法(Java8中新lambda方法)

/**
 * lejun.chen
 */
package com.chen.Controller;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;

/**
 * @author lejun.chen
 * @Time SystemTime
 */
public class mapTest {

    
    public static void main(String[] args) {
        Map<String,String> map=new HashMap<>();
        map.put("国家", "中国");
        map.put("魔都", "上海");
        map.put("寒冷", "北极");
        map.put("美女", "成都");
        map.put("发展", "武汉");
        map.put("美女多的", "重庆");
        
        //JAVA8
         System.out.println("<------1----------------------------------------->");
        /*map.forEach((K,V){
            System.out.println(K+"--------"+V);
         });
        */
          System.out.println("<------2----------------------------------------->");
        //1.老方法
        for (String a : map.keySet()) {
            System.out.println(a);
        }
        for (String b : map.values()) {
            System.out.println(b);
        }
     System.out.println("<------3----------------------------------------->");
        //第二种使用Map.Entry来遍历Map的条目
    for (Map.Entry<String, String> it :map.entrySet()) {
        System.out.println(it.getKey()+"-----"+it.getValue());
    }
    System.out.println("<----4------------------------------------------->");
        //迭代器遍历
    for (Iterator<Map.Entry<String, String>> it=map.entrySet().iterator();it.hasNext();) {
        Map.Entry<String, String> itt=it.next();
        System.out.println(itt.getKey()+"-------"+itt.getValue());
    }
    System.out.println("<----5------------------------------------------->");
     for (String a:map.keySet()) {
        System.out.println(a+"------"+map.get(a));
         
         
    }
    }
    
}
 

猜你喜欢

转载自blog.csdn.net/chen213wb/article/details/84205217