技术标签: java stream 遍历map
日常开发中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集合存在一些中间处理,可以过滤操作,使用流式遍历也很方便。
简单记录一下后台使用JavaMailSender发送邮件:导入jar包spring-boot-starter-mail配置文件spring.mail.protocol=smtpspring.mail.host=smtp.mxhichina.comspring.mail.port=465spring.mail.username=spring.mail.password=spring...
activity生命周期 home键和back键的区别 在Android中,当按下Home键,默认情况下stop前台的actiity,即activity设置成onstop,而不是ondestory。如果再次启动该activity不是调用onCreate,而是调用onSavedInstanceState方法,保持上次Activity的状态则是从onRestart开始->onStart->onResu
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的对象,使用程序运行结果显示:你好,我是李四我是计算机学院的学生class PersonA{ private String name; public void setName(String newName) { name=newName; } public String getName() { return name; }}class
6200 “警告 信息未提供” 6281 “警告 回送数据可能” 6282 “警告 文件长度小于Le” 6283 “警告 选中的文件无效” 6284 “警告 FCI格式与P2指定的不符” 6300 “警告 鉴别失败” 63Cx “警告 校验失败(x-允许重试次数)” 6400 “状态标志位没有变” 6581 “内存失败” 6700 “长度错误” 6882 “不支持安全报文” ...
/ 今日科技快讯 /近日,有网友发现,华为部分手机不再标配手机充电器和数据线,而是为消费者提供两种版本选择。其中不含充电器的版本比普通套装少200元。随后,相关话题引起网友热议。针...
一:ASM概述 ASM是一个Java字节码操纵框架,它能被用来动态生成类或者增强既有类的功能。ASM可以直接产生二进制class文件,也可以在类被加载入Java虚拟机之前动态改变类行为,ASM从类文件中读入信息后,能够改变类行为,分析类信息,甚至能够根据用户要求生成新类。目前许多框架如cglib、Hibernate、Spring都直接或间接地使用ASM操作字节码。二:AS...
最长上升子序列这类动规问题可以从规模比现在小的情况下开始,而在规模较小的情况下还有规模更小的情况,一直到只有一个点。也就是以每个点为终点的最长上升子序列的长度都是1。然后对于某一个点,遍历从下标为1到这个点的前一个点的数,如果比它下,那么以这个点为终点的最长上升子序列的长度就可以加1了。最终代码思路为:初始化每个dp数组下标的值都为1,然后对于每个点来说,都可以用它前面的几个点来更新,如果这个...
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地址: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