java stream 遍历map_遍历map的五种方法介绍_收纳王子的博客-程序员宝宝

技术标签: java stream 遍历map  

554a841dd105d7157ca80daf0ae27832.png

日常开发中Map集合遍历是经常使用的,下面介绍几种遍历方法的差异。

(推荐教程:java课程)

1、Iterator+entrySet写法【推荐JDK8以下】,Map.Entry是Map接口的内部接口,获取迭代器,然后依次取出每个迭代器里面的Map.EntryIterator> iterator=map.entrySet().iterator();

while(iterator.hasNext()){

Map.Entry entry=iterator1.next();

System.out.println(entry.getKey());

System.out.println(entry.getValue());

}

2、Iterator+keyset写法【不推荐,只能获取key,然后通过key获取对应的value,重复计算】Iterator iterator=map.keySet().iterator();

while (iterator.hasNext()){

Integer key=iterator.next();

System.out.println(key);

System.out.println(map.get(key));

}

3、foreach遍历方式【JDK8以下推荐写法】for(Map.Entry entry:map.entrySet()){

System.out.println(entry.getKey());

System.out.println(entry.getValue());

};

4、lambda表达式遍历【JDK8推荐写法,简捷】map.forEach((key,value)->{

System.out.println(key);

System.out.println(value);

});

5、stream流遍历Map【JDK8不推荐写法,重复计算】map.entrySet().stream().forEach((Map.Entry entry) -> {

System.out.println(entry.getKey());

System.out.println(entry.getValue());

});

如果Map集合存在一些中间处理,可以过滤操作,使用流式遍历也很方便。

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

智能推荐

springboot配置javaMail_叫我小宫的博客-程序员宝宝

简单记录一下后台使用JavaMailSender发送邮件:导入jar包spring-boot-starter-mail配置文件spring.mail.protocol=smtpspring.mail.host=smtp.mxhichina.comspring.mail.port=465spring.mail.username=spring.mail.password=spring...

Home,Back,Menu_飞奔的蜗牛93的博客-程序员宝宝

activity生命周期 home键和back键的区别 在Android中,当按下Home键,默认情况下stop前台的actiity,即activity设置成onstop,而不是ondestory。如果再次启动该activity不是调用onCreate,而是调用onSavedInstanceState方法,保持上次Activity的状态则是从onRestart开始->onStart->onResu

LINQ(入门)_weixin_30360497的博客-程序员宝宝

LINQ即语言集成查询,是.NET Framework 3.5中新增的功能。其功能类似于数据库中的SQL语句(实际上LINQ就是针对.NET Framework的SQL):提供标准的、易于学习的查询和更新数据模式。从from开始 用过SQL的朋友都知道,最简单的SQL语句SELECT record FROM tableName:获取表中的所有记录,那么对应于LINQ,其语法如下:fr...

时间复杂度学习记录_小敏子哒的博客-程序员宝宝

看了很多相关的文档,但大多都好官方,对于没有好好学习线性代数等之类专业学科的娃来说有点费脑子啊,话说之前被时间复杂度虐过,现在来简单整理一下学习笔记:首先谈到时间复杂度,是和算法挂钩,算法听着高深,实则一些计算赋值或for等,算法复杂度分时间复杂度与空间复杂度,空间复杂度是指占用内存,时间复杂度即时间频度,是指执行该语句的次数,下面对时间复杂度具体值进行解释。O(1):指运算次数为常数的算

定义一个PersonA类,定义一个PersionA类的子类StudentA类, 再定义一个C1类,在main()方法中,生成StudentA的对象,结果显示: 你好,我是李四 我是计算机学生_伪装渣反的博客-程序员宝宝

定义一个PersonA类,定义一个PersionA类的子类StudentA类,再定义一个C1类,在main()方法中,生成StudentA的对象,使用程序运行结果显示:你好,我是李四我是计算机学院的学生class PersonA{ private String name; public void setName(String newName) { name=newName; } public String getName() { return name; }}class

随便推点

CPU卡开发指南(一) CPU卡错误码_爬行的菜鸟的博客-程序员宝宝

6200 “警告 信息未提供” 6281 “警告 回送数据可能” 6282 “警告 文件长度小于Le” 6283 “警告 选中的文件无效” 6284 “警告 FCI格式与P2指定的不符” 6300 “警告 鉴别失败” 63Cx “警告 校验失败(x-允许重试次数)” 6400 “状态标志位没有变” 6581 “内存失败” 6700 “长度错误” 6882 “不支持安全报文” ...

一起来看看Android官推Kotlin-First的图片加载库_普通网友的博客-程序员宝宝

/ 今日科技快讯 /近日,有网友发现,华为部分手机不再标配手机充电器和数据线,而是为消费者提供两种版本选择。其中不含充电器的版本比普通套装少200元。随后,相关话题引起网友热议。针...

JVM学习笔记3:字节码操纵框架ASM_yuyivie1的博客-程序员宝宝

一:ASM概述         ASM是一个Java字节码操纵框架,它能被用来动态生成类或者增强既有类的功能。ASM可以直接产生二进制class文件,也可以在类被加载入Java虚拟机之前动态改变类行为,ASM从类文件中读入信息后,能够改变类行为,分析类信息,甚至能够根据用户要求生成新类。目前许多框架如cglib、Hibernate、Spring都直接或间接地使用ASM操作字节码。二:AS...

CSU 1047 最长上升子序列(线性dp)_H4ppyD0g的博客-程序员宝宝

最长上升子序列这类动规问题可以从规模比现在小的情况下开始,而在规模较小的情况下还有规模更小的情况,一直到只有一个点。也就是以每个点为终点的最长上升子序列的长度都是1。然后对于某一个点,遍历从下标为1到这个点的前一个点的数,如果比它下,那么以这个点为终点的最长上升子序列的长度就可以加1了。最终代码思路为:初始化每个dp数组下标的值都为1,然后对于每个点来说,都可以用它前面的几个点来更新,如果这个...

HDOJ 1000_machineliker的博客-程序员宝宝

A + B ProblemTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 1018050 Accepted Submission(s): 301819Problem DescriptionCalculate A + B.InputEach line will contain two integers A and B. Process

hdu 1576 A/B || hdu 2669 Romantic (数论--欧几里德)_Akay_99的博客-程序员宝宝

题目:hdu 1576  A/B地址:http://acm.hdu.edu.cn/showproblem.php?pid=1576思路:   1.题目要求 (A/B)%9973,那么我先求出 A = B*x;    2.由于题目给了n,B; n = A - A/9973 * 9973,因为(A/9973)为整数,所以令其为y;   3.将(1)(2)代替得:n = B*x