问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

8种有效方式迭代Java Map中的每个条目

发布网友 发布时间:2024-09-25 18:15

我来回答

1个回答

热心网友 时间:2024-09-29 19:44

前言:有收获的话请加颗小星星,没有收获的话可以?反对 没有帮助 举报三连

8种有效方式1 iterator + Map.Entrylong i = 0;Iterator<Map.Entry<Integer, Integer>> it = map.entrySet().iterator();while (it.hasNext()) {Map.Entry<Integer, Integer> pair = it.next();i += pair.getKey() + pair.getValue();}System.out.println(i);2 foreach + Map.Entrylong i = 0;for (Map.Entry<Integer, Integer> pair : map.entrySet()) {i += pair.getKey() + pair.getValue();}System.out.println(i);3 foreach Java8final long[] i = {0};map.forEach((k, v) -> i[0] += k + v);System.out.println(i[0]);4 keySet + foreachlong i = 0;for (Integer key : map.keySet()) {i += key + map.get(key);}System.out.println(i);5 keySet + iteratorlong i = 0;Iterator<Integer> it = map.keySet().iterator();while (it.hasNext()) {Integer key = it.next();i += key + map.get(key);}System.out.println(i);6 for + Map.Entrylong i = 0;for (Iterator<Map.Entry<Integer, Integer>> entries = map.entrySet().iterator(); entries.hasNext(); ) {Map.Entry<Integer, Integer> entry = entries.next();i += entry.getKey() + entry.getValue();}System.out.println(i);7 Java8 Stream ApiSystem.out.println(map.entrySet().stream().mapToLong(e -> e.getKey() + e.getValue()).sum());8 Java8 Stream Api parallelSystem.out.println(map.entrySet().parallelStream().mapToLong(e -> e.getKey() + e.getValue()).sum());效率对比# 初始化Mappublic final static Integer SIZE = 10000;public Map<Integer, Integer> map = toMap();public Map<Integer, Integer> toMap(){map = new HashMap<>(SIZE);for (int i = 0; i < SIZE; i++) {map.put(i, i);}return map;}SIZE = 10000SIZE = 1000000SIZE = 10000000总结

通过数据对比,我们得知:

1 方式6是耗时最长的,方式8在数量少的时候耗时较长,但是数量大的时候耗时最短,因为方式8是并发执行。

2 一个有趣的现象,Test执行顺序总是for -> while -> foreach/stream,作者也没搞清楚为什么。

参考

How do I efficiently iterate over each entry in a Java Map?

原文:https://juejin.cn/post/7103418770114215972
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
erp可以看评论地址吗 淘宝评论url是什么意思? 揭秘:码牌支付风控升级,背后真相揭秘 电脑电视直播软件哪个好用什么软件好电脑看电视直播 潼南子同街学区是哪些 三极管BU406价格和参数? 火锅料放在冰柜忘了插电一个星期给会坏了吗 火锅的设备有哪些 火锅餐厅厨房有哪些 小火锅厨房设备有哪些 java Map遍历方式及性能对比 笔记本安装系统出现"Security Boot Fail"是什么意思 securitybootfail怎么进入系统 宏基电脑出现securitybootfail然后进不去系统怎么办? 南乐南乐方言 梦见老婆上司送给我们食用油的预兆 js中的forEach、for-in-、for-of之间的区别 杰斯盾断桥门窗价格? 旅鸟雁属鸟类 为什么至强比酷睿便宜那么多,至强不好? 旅鸟有哪些 ...就是松紧带的白色体操鞋,什么电视剧或者电影里边有! 数据结构—二叉树的4种遍历方式详解以及Java代码的完整演示 2020汽车购置税计算公式是什么 汽车购置税2020新规计算公式 北京空运? 散片CPU真有那么高性价比?背后的问题你了解吗? CPU AMD 速龙II X2 250(盒)跟 散片有什么不一样?? cpu买散片会翻车吗 - 知百科 大家有没有发现,散片CPU涨价了好几百 220千伏电网与房屋的垂直安全距离是多少?�1�3 我要在220KV的高压线附近安装一台龙门吊,请问安全距离是多远?谢谢1 安全间距有哪些规定? 减肥达人训练营是真的吗 水泵噪音治理找哪家? 住电梯中低层会不会听到地下室增压水泵的噪音? 遇到骚扰,如何自保? 如何应付骚扰的人 怎么知道一个微信公众号谁关注的? 如何避免在公共场合被强行索要联系方式? ...王霏霏力压宁静万茜成第一,你觉得她的业务能力怎么样? 孟佳逆袭成观众喜爱度第一实至名归,你知道她的实力有多强吗?_百度... 弹弹堂手游什么武器比较好用 弹弹堂手游哪个武器厉害 弹弹堂手游20级武器哪个好 20级武器技能详解 弹弹堂手游超级武器哪个好弹弹堂手游武器排行分析 《弹弹堂手游》中期选择什么武器厉害介绍_《弹弹堂手游》中期选择什么... 弹弹堂手游什么武器好 弹弹堂手游哪个武器好 弹弹堂大冒险武器哪个好-弹弹堂大冒险武器排行2023 人人乐购物卡是否可以用于网上购物?