Java中遍历Map集合的五种方式
写在前面: 我是「扬帆向海」,这个昵称来源于我的名字以及女朋友的名字。我热爱技术、热爱开源、热爱编程。
技术是开源的、知识是共享的。
这博客是对自己学习的一点点总结及记录,如果您对 Java、算法 感兴趣,可以关注我的动态,我们一起学习。
用知识改变命运,让我们的家人过上更好的生活
。
文章目录
- 方式一 通过Map.keySet使用iterator遍历
- 方式二 通过Map.entrySet使用iterator遍历
- 方式三 通过Map.keySet遍历
- 方式四 通过For-Each迭代entries,使用Map.entrySet遍历
- 方式五 使用lambda表达式forEach遍历
- 总结
方式一 通过Map.keySet使用iterator遍历
@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遍历
@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遍历
@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遍历
@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和valuefor (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遍历
@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 源码
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集合的五种方式相关推荐
- Java中遍历Map集合的5种方式总结
这篇文章主要给大家介绍了关于Java中遍历Map集合的5种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值. 方式一 通过Map.keySet使用iterator遍历 ...
- java中遍历Map对象的四种方式
import java.util.HashMap; import java.util.Map; /** * 遍历Map对象 * @author xiaosongsong: * @CreateTim ...
- Java中遍历Set集合的三种方法
Map集合:链接: Map集合的五种遍历方式及Treemap方法 Set集合:链接: Java中遍历Set集合的三种方法 TreeSet集合:链接: Java深入了解TreeSet,和迭代器遍历方法 ...
- Java中遍历Set集合的三种方法(实例代码)
哈喽,欢迎来到小朱课堂,下面开始你的学习吧! Java中遍历Set集合的三种方法 废话不多说,直接上代码 1.迭代遍历: Set set = new HashSet(); Iterator it = ...
- 遍历List集合的五种方式
遍历List集合的五种方式 //创建一个集合ArrayList<Student> alist = new ArrayList<>();//向集合中添加元素alist.add(n ...
- java中读取properties文件内容五种方式
一.背景 最近,在项目开发的过程中,遇到需要在properties文件中定义一些自定义的变量,以供java程序动态的读取,修改变量,不再需要修改代码的问题.就借此机会把Spring+SpringMVC ...
- java遍历一个map集合_Java遍历Map集合的四种方式
Map 集合的遍历与 List 和 Set 集合不同.Map 有两组值,因此遍历时可以只遍历值的集合,也可以只遍历键的集合,也可以同时遍历.Map 以及实现 Map 的接口类(如 HashMap.Tr ...
- 【020期】面试官问:Java 遍历 Map 集合有几种方式?效率如何?
>>号外:关注"Java精选"公众号,回复"2021面试题",领取免费资料!"Java精选面试题"小程序,3000+ 道面试题在 ...
- JAVA中的arraylist集合_java中遍历ArrayList集合的四种方式
详细内容 ArrayList遍历:取出ArrayList集合中的数据 方式一:for循环 方式二:增强for循环:foreach 方式三:Iterator:迭代器 方式四:ListIterator:双 ...
- java中遍历集合_java中遍历ArrayList集合的四种方式
ArrayList遍历:取出ArrayList集合中的数据 方式一:for循环 方式二:增强for循环:foreach 方式三:Iterator:迭代器 方式四:ListIterator:双向迭代器 ...
最新文章
- python列出文件夹所有文件_python-列出所有目录及子目录文件
- DNS and BIND
- python中实例方法与实例属性-Python中的类属性和实例属性以及静态方法和类方法...
- jmeter线程说明_4.centos下Jmeter+InfluxDB+Grafana环境的搭建1
- spring配置详解-模块化配置
- pthread_create函数 参数不匹配的问题
- 微服务之数据同步Porter 1
- 景观分析工具:arcgis中patch analysis模块
- mysql中两列拼接_python之Pandas读写操作mysql数据库
- java web 图表控件_2020 最新流行的Java Web报表工具比对
- 人工智能是 6G 诞生的关键!| 极客头条
- 阿里云centos远程连接mysql
- 按名次对数据进行排序cpp_面试中的排序算法(Part 3)
- 隐藏WIN10资源管理器中的3D对象文件夹
- (转)吴寿鹤:区块链中的软分叉与硬分叉详解
- 小米 samba linux,U-BOOT移植准备之(一)Samba服务器
- 3.6计算机网络(网络层概述 电路交换 报文交换 分组交换)
- 联想台式主机拆机教程_联想台式电脑主机怎么拆 联想b5040一体机拆机
- 【前端GUI】—— 网站美工必须掌握的PS知识点思维导图
- ACwing166数独与183靶形数独