java中Map遍历的4种方式

Posted 睡竹

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中Map遍历的4种方式相关的知识,希望对你有一定的参考价值。

目录

1、map.entrySet()方式

2、map.keySet()方式

3、map.values()方式

4、forEach方式


本文以如下map案例:

Map<String, String> map = new HashMap<>();
map.put("student1", "张三");
map.put("student2", "李四");
map.put("student3", "王五");

1、map.entrySet()方式

  • entrySet()方法: 获取map中所有的键值对,结果为Set集合
  • 在jdk版本小于1.8时,该种方式经常使用,效率高
//获取map中的所有键值对,结果为Set类型的集合
Set<Map.Entry<String, String>> entries = map.entrySet();
/** 遍历Set集合、开发中常见的遍历方式 */
//1、增强for形式遍历结果
for (Map.Entry<String, String> entry : entries) 
     System.out.println(entry);

//2、Lamdba表达式遍历结果
entries.forEach(entry-> System.out.println(entry));

2、map.keySet()方式

  • keySet()方法:获取map中的所有键(key),结果为Set集合
  • 该种方式比 entrySet()方式较慢,且比方式4慢,实际开发中也可使用
//获取map中的所有键,结果为Set类型的集合
Set<String> keys = map.keySet();
//根据key获取map中的元素
for (String key : keys) 
    System.out.println(map.get(key));

3、map.values()方式

  • values():直接获取map所有的值(value),组装为一个Collection集合
  • 该种方式效率最低,使用到最上层的Collection接口,开发中应当避免使用
//直接获取map所有的值(value),组装为一个Collection集合【Collection集合是Set、List的父接口】
Collection<String> values = map.values();
//遍历Collection集合
for (String value : values) 
    System.out.println(value);

4、forEach方式

  • 需JDK8及以上,直接支持遍历map
  • 该种方式是方式1(entrySet)的进一步封装,优化了代码的简洁性,性能与entrySet略慢(因为进一步封装了下),开发中经常使用

语法:

//当业务代码只有一句时,""符号与";"符号可以省略

map.forEach((键变量名称,值遍历名称)->

        //业务代码

);

 /**
  * key 代表map中的键,名称任意命名
  * value 代表map中key对应的值,名称也任意命名
  */
map.forEach((key,value)-> 
    System.out.println(value);
);

可以缩写为:

map.forEach((key,value)->System.out.println(value));

java中Map遍历的四种方式

在java中所有的map都实现了Map接口,因此所有的Map(如HashMap, TreeMap, LinkedHashMap, Hashtable等)都可以用以下的方式去遍历。

方法一:在for循环中使用entries实现Map的遍历(最常用的):

  /**
  * 最常见也是大多数情况下用的最多的,一般在键值对都需要使用
  */
  Map <String,String>map = new HashMap<String,String>();
    map.put("one", "我是第一名");
    for(Map.Entry<String, String> entry : map.entrySet()){
      String mapKey = entry.getKey();
      String mapValue = entry.getValue();
      System.out.println(mapKey+":"+mapValue);
    }

方法二:在for循环中遍历key或者values,只需要map中的key或者value时使用,在性能上比使用entrySet较好;

  Map <String,String>map = new HashMap<String,String>();
    map.put("one", "我是第一名");
    //key
    for(String key : map.keySet()){
      System.out.println(key);
     }
    //value
    for(String value : map.values()){
      System.out.println(value);
    }

方法三:通过Iterator遍历(增强for循环原理也是Iterator);

Iterator<Entry<String, String>> entries = map.entrySet().iterator();
  while(entries.hasNext()){

    //先next在获取,否则会空指针
    Entry<String, String> entry = entries.next();
    String key = entry.getKey();
    String value = entry.getValue();
    System.out.println(key+":"+value);
  }

方法四:通过键找值遍历,这种方式的效率比较低,因为本身从键取值是耗时的操作;

for(String key : map.keySet()){
    String value = map.get(key);
    System.out.println(key+":"+value);
}

以上是关于java中Map遍历的4种方式的主要内容,如果未能解决你的问题,请参考以下文章

Java中如何遍历Map对象的4种方法

Java中如何遍历Map对象的4种方法

遍历Map的几种方式

精髓!Java中遍历Map集合的五种方式

Java中Map集合的三种遍历方式

Java中遍历Map对象的4种方法