Java之五种遍历Map集合的方式
摘要:在java中所有的map都实现了Map接口,因此所有的Map都可以用以下的方式去遍历。
在java中所有的map都实现了Map接口,因此所有的Map都可以用以下的方式去遍历。这篇文章主要给大家介绍了关于Java中遍历Map集合的5种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面一起学习学习吧。
方式一 通过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和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遍历
- @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集合的方式的更多相关文章
- (1)集合 ---遍历map集合
Map接口 实现Map接口的类用来存储键(key)-值(value) 对.Map 接口的实现类有HashMap和TreeMap等.Map类中存储的键-值对通过键来标识,所以键值不能重复. Ha ...
- 遍历Map集合:java.util.Map.Entry、KeySet两种方式
遍历Map集合的两种方式: 1.用KeySet Map.keySet(),返回一个存放所有key的set集合,通过遍历集合,根据key值取出所有的value值. Map<String,Strin ...
- 键盘录入一个文件夹路径,统计该文件夹(包含子文件夹)中每种类型的文件及个数,注意:用文件类型(后缀名,不包含.(点),如:"java","txt")作为key, 用个数作为value,放入到map集合中,遍历map集合
package cn.it.zuoye5; import java.io.File;import java.util.HashMap;import java.util.Iterator;import ...
- [集合]Map的 entrySet() 详解以及用法(四种遍历map的方式)
Entry 由于Map中存放的元素均为键值对,故每一个键值对必然存在一个映射关系. Map中采用Entry内部类来表示一个映射项,映射项包含Key和Value (我们总说键值对键值对, 每一个键值对也 ...
- Java中遍历Map集合的四种方法
在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都 ...
- 遍历Map集合的几种方式
import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entr ...
- 转!! Java中如何遍历Map对象的4种方法
在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都 ...
- 【转】Java中如何遍历Map对象的4种方法
原文网址:http://blog.csdn.net/tjcyjd/article/details/11111401 在Java中如何遍历Map对象 How to Iterate Over a Map ...
- (转载)Java中如何遍历Map对象的4种方法
在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都 ...
随机推荐
- [LeetCode]Subtree of Another Tree判断一棵树是不是另一棵树的子树
将树序列化为字符串,空节点用符号表示,这样可以唯一的表示一棵树. 用list记录所有子树的序列化,和目标树比较. List<String> list = new ArrayList< ...
- SpringBoot进阶教程(六十九)ApplicationContextAware
在某些特殊的情况下,Bean需要实现某个功能,但该功能必须借助于Spring容器才能实现,此时就必须让该Bean先获取Spring容器,然后借助于Spring容器实现该功能.为了让Bean获取它所在的 ...
- 使用node+puppeteer+express搭建截图服务
使用node+puppeteer+express搭建截图服务 转载请注明出处https://www.cnblogs.com/funnyzpc/p/14222807.html 写在之前 一开始我们的需求 ...
- 漫谈JSON Web Token(JWT)
一.背景 传统的单体应用基于cookie-session的身份验证流程一般是这样的: 用户向服务器发送账户和密码. 服务器验证账号密码成功后,相关数据(用户角色.登录时间等)都保存到当前会话中. 服务 ...
- hive 将hive表数据查询出来转为json对象和json数组输出
一.将hive表数据查询出来转为json对象输出 1.将查询出来的数据转为一行一行,并指定分割符的数据 2.使用UDF函数,将每一行数据作为string传入UDF函数中转换为json再返回 1.准备数 ...
- Java中定时器Timer致命缺点(附学习方法)
简介 这篇文章我一直在纠结到底要不要写,不想写一来因为定时器用法比较简单,二来是面试中也不常问.后来还是决定写了主要是想把自己分析问题思路分享给大家,让大家在学习过程中能够参考,学习态度我相信大部分人 ...
- Win Task 任务管理器 批量杀进程方法
Example Kill All Chrome & Chrome Driver taskkill /IM chromedriver.exe /F taskkill /IM chrome.exe ...
- 风炫安全WEB安全学习第二十四节课 利用XSS钓鱼攻击
风炫安全WEB安全学习第二十四节课 利用XSS钓鱼攻击 XSS钓鱼攻击 HTTP Basic Authentication认证 大家在登录网站的时候,大部分时候是通过一个表单提交登录信息. 但是有时候 ...
- Tensorflow--------tf.nn库
1.tf.nn :提供神经网络相关操作,包括卷积神经(conv),池化操作(pooling),归一化,loss,分类操作,embedding,RNN,Evaluation. 2.tf.layers:高 ...
- CSS&&label_div
Css-div部分 本章主要内容 0.基础知识 1.CSS概述 2.CSS基础语法 3.CSS选择器 4.CSS主要属性 5.CSS核心机制-盒子模型 6.CSS重点和难点-定位 7.综合示例 基础知 ...