示例代码如下:

package com.miracle.luna.lambda;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map; /**
* @author Miracle Luna
* @version 1.0
* @date 2019/6/9 21:41
*/
public class TraverseMap {
public static void main(String[] args) {
Map<String, String> map = new HashMap<String, String>();
map.put("key1", "value1");
map.put("key2", "value2");
map.put("key3", "value3"); // 第一种遍历方式
System.out.println("第一种遍历方式:通过遍历 Map 的 keySet,遍历 Key 和 Value");
for (String key : map.keySet()) {
System.out.println("Key: " + key + ", Value: " + map.get(key));
} // 第二种遍历方式(如果在遍历过程中,有删除某些Key-Value的需求,可以使用这种遍历方式)
System.out.println("\n第二种遍历方式:通过Iterator 迭代器遍历 Key 和 Value");
Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator();
while(iterator.hasNext()) {
Map.Entry<String, String> entry = iterator.next();
System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());
} // 第三种遍历方式(推荐,尤其是容量大时)
System.out.println("\n第三种遍历方式:通过遍历 Map 的 entrySet,遍历 Key 和 Value");
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());
} // 第四种遍历方式
System.out.println("\n第四种遍历方式:通过遍历 Map 的 values,只能遍历 Value,获取不到对应的 Key");
for (String value : map.values()) {
System.out.println("Value: " + value);
} // 第五种遍历方式(JDK 1.8支持的 Lambda 表达式,强烈推荐!!!)
System.out.println("\n第五种遍历方式:通过 Lambda 表达式,遍历 Key 和 Value");
map.forEach((key, value) -> {
System.out.println("Key: " + key + ", Value: " + value);
}); }
}

运行结果如下:

第一种遍历方式:通过遍历 Map 的 keySet,遍历 Key 和 Value
Key: key1, Value: value1
Key: key2, Value: value2
Key: key3, Value: value3 第二种遍历方式:通过Iterator 迭代器遍历 Key 和 Value
Key: key1, Value: value1
Key: key2, Value: value2
Key: key3, Value: value3 第三种遍历方式:通过遍历 Map 的 entrySet,遍历 Key 和 Value
Key: key1, Value: value1
Key: key2, Value: value2
Key: key3, Value: value3 第四种遍历方式:通过遍历 Map 的 values,只能遍历 Value,获取不到对应的 Key
Value: value1
Value: value2
Value: value3 第五种遍历方式:通过 Lambda 表达式,遍历 Key 和 Value
Key: key1, Value: value1
Key: key2, Value: value2
Key: key3, Value: value3

PS:

总结,参考如下:

Enum枚举 遍历判断 四种方式(包括 Lambda 表达式过滤)
https://www.cnblogs.com/miracle-luna/p/10995539.html

Array数组 遍历 四种方式(包含 Lambda 表达式遍历)
https://www.cnblogs.com/miracle-luna/p/10995469.html

List集合 遍历 四种方式(包含 Lambda 表达式遍历)
https://www.cnblogs.com/miracle-luna/p/10995400.html

Map集合 遍历 五种方式(包含 Lambda 表达式遍历)
https://www.cnblogs.com/miracle-luna/p/10995132.html

Java Map集合 遍历 五种方式(包含 Lambda 表达式遍历)的更多相关文章

  1. Java Array数组 遍历 四种方式(包含 Lambda 表达式遍历)

    示例代码如下: package com.miracle.luna.lambda; import java.util.Arrays; /** * @Author Miracle Luna * @Date ...

  2. Java List集合 遍历 四种方式(包含 Lambda 表达式遍历)

    示例代码如下: package com.miracle.luna.lambda; import java.util.ArrayList; import java.util.List; /** * @A ...

  3. Java中创建对象的五种方式

    我们总是讨论没有对象就去new一个对象,创建对象的方式在我这里变成了根深蒂固的new方式创建,但是其实创建对象的方式还是有很多种的,不单单有new方式创建对象,还有使用反射机制创建对象,使用clone ...

  4. 遍历Map集合的几种方式

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

  5. JAVA解析xml的五种方式比较

     1)DOM解析 DOM是html和xml的应用程序接口(API),以层次结构(类似于树型)来组织节点和信息片段,映射XML文档的结构,允许获取 和操作文档的任意部分,是W3C的官方标准 [优点] ① ...

  6. JAVA性能优化的五种方式

    一,JAVA性能优化之设计优化 设计优化处于性能优化手段的上层.它往往须要在软件开发之前进行.在软件开发之前,系统架构师应该就评估系统可能存在的各种潜在问题和技术难点,并给出合理的设计方案,因为软件设 ...

  7. Java中创建对象的几种方式

    Java中创建对象的五种方式: 作为java开发者,我们每天创建很多对象,但是我们通常使用依赖注入的方式管理系统,比如:Spring去创建对象,然而这里有很多创建对象的方法:使用New关键字.使用Cl ...

  8. Map集合的两种遍历方式

    Map集合:即 接口Map<K,V> map集合的两种取出方式:    1.Set<k> keyset: 将map中所有的键存入到set集合(即将所有的key值存入到set中) ...

  9. Java遍历Map对象的四种方式

    关于java中遍历map具体哪四种方式,请看下文详解吧. 方式一 :这是最常见的并且在大多数情况下也是最可取的遍历方式.在键值都需要时使用. Map<Integer, Integer> m ...

随机推荐

  1. linux系统使用grep命令提取文件的基名或者路径名

    效果等于~]#dirname /etc/sysconfig/network-scripts/ifcfg-ens33 echo "/etc/sysconfig/network-scripts/ ...

  2. 02-springmvc分布式项目dataService项目配置

    spring总文件 文件名:applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> ...

  3. [易学易懂系列|rustlang语言|零基础|快速入门|(14)|Impls & Traits实现与特征]

    [易学易懂系列|rustlang语言|零基础|快速入门|(14)] 有意思的基础知识 Impls & Traits实现与特征 我之前说到的struct结构体,其实就类似于面向对象语言中的类cl ...

  4. springmvc其他类获取request记得web.xml

    <listener> <listener-class>org.springframework.web.context.request.RequestContextListene ...

  5. 【2019银川网络赛】L:Continuous Intervals

    题目大意:给定一个长度为 N 的序列,定义连续区间 [l, r] 为:序列的一段子区间,满足 [l, r] 中的元素从小到大排序后,任意相邻两项的差值不超过1.求一共有多少个连续区间. 题解:单调栈 ...

  6. 我说CMMI之三:CMMI的构件--转载

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/dylanren/article/deta ...

  7. 依赖jquery的select皮肤2

    这个下拉菜单存在于body中,不会受select父级overflow的影响,同样依赖于jquery. 缺陷是如果select上的样式不是定义在class上的,不能完全获取select上的样式. 不过, ...

  8. qt5--表格控件QTableWidget

    需要    #include <QTableWidget>      #include <QTableWidgetItem> #include "win.h" ...

  9. 微信小程序没找到构建npm或者没找到node_modules目录以及如何在小程序中引入vant weapp组件

    微信小程序没找到构建npm或者没找到node_modules目录解决方法如下: 按照微信小程序提供的文档npm install是不行的,直接提示没找到可构建的npm包. 1.直接安装:npm init ...

  10. 百度地图api,点击标注,改变标注marker图标的链接地址

    改变选中的图标样式 // 选中高亮标注图片 let mapIcon = ‘./icon.png’; //标注点 let markerArrs = [{},{},....]; // 点击标注点 mark ...