这篇文章主要给大家介绍了关于Java中遍历Map集合的5种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值.

方式一 通过Map.keySet使用iterator遍历

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

@Test

public void testHashMap1() {

 Map<Integer, String> map = new HashMap<>();

 map.put(001, "Java");

 map.put(002, "数据库");

 map.put(003, "Vue");

 System.out.println(map);

 // 通过Map.keySet使用iterator遍历key,然后通过key得到对应的value值

 Iterator<Integer> iterator = map.keySet().iterator();

 while (iterator.hasNext()) {

 Integer key = iterator.next();

 String value = map.get(key);

 System.out.println("key = " + key + ", value = " + value);

 }

}

结果:

{1=Java, 2=数据库, 3=Vue}
key = 1, value = Java
key = 2, value = 数据库
key = 3, value = Vue

方式二 通过Map.entrySet使用iterator遍历

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

@Test

public void testHashMap2() {

 Map<Integer, String> map = new HashMap<>();

 map.put(001, "Java");

 map.put(002, "数据库");

 map.put(003, "Vue");

 System.out.println(map);

 // 通过Map.entrySet使用iterator遍历key和value;注意 Set entrySet():返回所有key-value对构成的Set集合

 Iterator<Map.Entry<Integer, String>> entries = map.entrySet().iterator();

 while (entries.hasNext()) {

 Map.Entry<Integer, String> entry = entries.next();

 System.out.println(entry);

 }

}

结果:

{1=Java, 2=数据库, 3=Vue}
1=Java
2=数据库
3=Vue

方式三 通过Map.keySet遍历

1

2

3

4

5

6

7

8

9

10

11

12

13

@Test

public void testHashMap3() {

 Map<Integer, String> map = new HashMap<>();

 map.put(001, "Java");

 map.put(002, "数据库");

 map.put(003, "Vue");

 System.out.println(map);

 // 通过Map.keySet遍历key,然后通过key得到对应的value值

 for (Integer key : map.keySet()) {

 System.out.println("key = " + key + ", value = " + map.get(key));

 }

}

结果:

{1=Java, 2=数据库, 3=Vue}
key = 1, value = Java
key = 2, value = 数据库
key = 3, value = Vue

方式四 通过For-Each迭代entries,使用Map.entrySet遍历

1

2

3

4

5

6

7

8

9

10

11

12

13

@Test

public void testHashMap4() {

 Map<Integer, String> map = new HashMap<>();

 map.put(001, "Java");

 map.put(002, "数据库");

 map.put(003, "Vue");

 System.out.println(map);

 // 使用For-Each迭代entries,通过Map.entrySet遍历key和value

 for (Map.Entry<Integer, String> entry : map.entrySet()) {

 System.out.println("key = " + entry.getKey() + ", value = " + entry.getValue());

 }

}

{1=Java, 2=数据库, 3=Vue}
key = 1, value = Java
key = 2, value = 数据库
key = 3, value = Vue

方式五 使用lambda表达式forEach遍历

1

2

3

4

5

6

7

8

9

10

11

@Test

public void testHashMap5() {

 Map<Integer, String> map = new HashMap<>();

 map.put(001, "Java");

 map.put(002, "数据库");

 map.put(003, "Vue");

 System.out.println(map);

    // 使用lambda表达式forEach遍历

 map.forEach((k, v) -> System.out.println("key = " + k + ", value = " + v));

}

forEach 源码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

default void forEach(BiConsumer<? super K, ? super V> action) {

 Objects.requireNonNull(action);

 for (Map.Entry<K, V> entry : entrySet()) {

  K k;

  V v;

  try {

  k = entry.getKey();

  v = entry.getValue();

  } catch(IllegalStateException ise) {

  // this usually means the entry is no longer in the map.

  throw new ConcurrentModificationException(ise);

  }

  action.accept(k, v);

 }

 }

从源码可以看到,这种新特性就是在传统的迭代方式上加了一层壳,但是让代码变得更加简单。(开发中推荐使用)

总结

推荐使用 entrySet 遍历 Map 类集合 KV (文章中的第四种方式),而不是 keySet 方式进行遍历。

keySet 其实是遍历了 2 次,第一次是转为 Iterator 对象,第二次是从 hashMap 中取出 key 所对应的 value值。而 entrySet 只是遍历了一次,就把 key 和 value 都放到了 entry 中,效率更高。

values()返回的是 V 值集合,是一个 list 集合对象;keySet()返回的是 K 值集合,是一个 Set 集合对象;entrySet()返回的是 K-V 值组合集合。

如果是 JDK8,推荐使用Map.forEach 方法(文章中的第五种方式)。

Java中遍历Map集合的5种方式总结相关推荐

  1. java中遍历Map对象的四种方式

    import java.util.HashMap; import java.util.Map; /**  * 遍历Map对象 * @author xiaosongsong:  * @CreateTim ...

  2. Java中遍历Set集合的三种方法

    Map集合:链接: Map集合的五种遍历方式及Treemap方法 Set集合:链接: Java中遍历Set集合的三种方法 TreeSet集合:链接: Java深入了解TreeSet,和迭代器遍历方法 ...

  3. Java中遍历Set集合的三种方法(实例代码)

    哈喽,欢迎来到小朱课堂,下面开始你的学习吧! Java中遍历Set集合的三种方法 废话不多说,直接上代码 1.迭代遍历: Set set = new HashSet(); Iterator it = ...

  4. java遍历一个map集合_Java遍历Map集合的四种方式

    Map 集合的遍历与 List 和 Set 集合不同.Map 有两组值,因此遍历时可以只遍历值的集合,也可以只遍历键的集合,也可以同时遍历.Map 以及实现 Map 的接口类(如 HashMap.Tr ...

  5. 【020期】面试官问:Java 遍历 Map 集合有几种方式?效率如何?

    >>号外:关注"Java精选"公众号,回复"2021面试题",领取免费资料!"Java精选面试题"小程序,3000+ 道面试题在 ...

  6. JAVA中的arraylist集合_java中遍历ArrayList集合的四种方式

    详细内容 ArrayList遍历:取出ArrayList集合中的数据 方式一:for循环 方式二:增强for循环:foreach 方式三:Iterator:迭代器 方式四:ListIterator:双 ...

  7. java中遍历集合_java中遍历ArrayList集合的四种方式

    ArrayList遍历:取出ArrayList集合中的数据 方式一:for循环 方式二:增强for循环:foreach 方式三:Iterator:迭代器 方式四:ListIterator:双向迭代器 ...

  8. java中的map对象_java中遍历Map对象的四种方式

    import java.util.HashMap; import java.util.Map; /** * 遍历Map对象 * @author xiaosongsong: * @CreateTime ...

  9. Java 中初始化 List 集合的 6 种方式!

    List 是 Java 开发中经常会使用的集合,你们知道有哪些方式可以初始化一个 List 吗?这其中不缺乏一些坑,今天栈长我给大家一一普及一下. 1.常规方式 List<String> ...

最新文章

  1. react控制组件的显示或隐藏, 根据state判断元素显示隐藏 , setState不实时生效解决方法
  2. 图片裁切,上传,自动匹配颜色。
  3. 【项目管理】ITTO-范围管理
  4. 使用awk用一个列替换另一个文件中的列?
  5. php教程知识点归纳,PHP知识点小结
  6. SQL Server2000企业管理器在Win7中新建表错误的解决方法
  7. 如何实现分布式 java_Redis中是如何实现分布式锁的?
  8. 逼自己玩命学了3个多月,吃透这19个架构视频!分享给你,让你今年进个大厂!(限时领)...
  9. WASM 成为 HTML、CSS 与 JS 之后的第 4 门 Web 语言
  10. 修改WiFi/BT模组—R329智能语音开发板入门
  11. Unity 如何实现批量修改图片格式
  12. 微信小程序测试号申请页面不显示AppID 和AppSecret的解决办法
  13. 4.3寸TFTLCD显示JPG图片
  14. 联合利华vs乡镇企业
  15. 我的Bug日常:spark基于yarn运行时抛错,内存不足Required executor memory (1024 MB), offHeap memory (0) MB。问题已解决,亲测有用~~~
  16. springboot启动 lombok 找不到符号
  17. 深剖VR,AR和MR三者之间关系
  18. 2022出海东南亚:马来西亚电商市场现状及网红营销特点
  19. 【ctf学习】RSA共模攻击
  20. ubuntu1804

热门文章

  1. 厦大C语言上机 1367 几何级数的计算机验证法
  2. JUC笔记(三)多线程的核心
  3. 使用opengl实现爆炸特效
  4. 关于调用百度AI接口进行图片识别的实现(C#)
  5. 区块链开发(十四)以太坊go-ethereum客户端查询交易列表探讨
  6. C语言串口编程收发数据 并实现AT指令的收发 可变参数控制串口属性 树莓派4G模块
  7. GStreamer学习笔记
  8. 介绍|三大前端框架之Vue
  9. mouseenter 与mouseover 区别
  10. 2021Java面经:最便宜java培训机构