map怎么遍历删除(map集合遍历的三种方式)

   2023-05-21 互联网0
核心提示:1、由来 我们应该在什么时刻选择什么样的遍历方式呢,必须通过实践的比较才能看到效率,也看了很多文章,大家建议使用entrySet,认为entrySet对于大数据量的查找来说,速度更快,今天我们就通过下面采用不同方法遍历key+value,k

map怎么遍历删除(map集合遍历的三种方式)

1、由来

我们应该在什么时刻选择什么样的遍历方式呢,必须通过实践的比较才能看到效率,也看了很多文章,大家建议使用entrySet,认为entrySet对于大数据量的查找来说,速度更快,今天我们就通过下面采用不同方法遍历key+value,key,value不同情景下的差异。

2、准备测试数据:

HashMap1:大小为1000000,key和value的值均为String,key的值为1、2、3………1000000;

Map map =new HashMap(); String key,value; for(int i=1;i<=num;i++){ key = ""+i; value="value"+i; map.put(key,value); }

HashMap2:大小为1000000,key和value的值为String,key的值为50、100、150……..50000000;

Map map = new HashMap(); String key,value; for(int i=1;i<=num;i++){ key=""+(i*50); value="value"+key; map.put(key,value);} 3、场景测试 3.1遍历key+value

1)keySet利用Iterator遍历

long startTime1 =System.currentTimeMillis();Iterator iter = map.keySet().iterator();while (iter.hasNext()){ key=iter.next(); value=map.get(key);}long endTime1 =System.currentTimeMillis();System.out.println("第一个程序运行时间:"+(endTime1-startTime1)+"ms");

2)keySet利用for遍历

long startTime2 =System.currentTimeMillis(); for(String key2:map.keySet()){ value=map.get(key2); }long endTime2 =System.currentTimeMillis();System.out.println("第二个程序运行时间:"+(endTime2-startTime2)+"ms");

3)entrySet利用Iterator遍历

long startTime3=System.currentTimeMillis();Iterator> iter3 =map.entrySet().iterator();Map.Entry entry3;while (iter3.hasNext()){ entry3 = iter3.next(); key = entry3.getKey(); value=entry3.getValue();}long endTime3 =System.currentTimeMillis();System.out.println("第三个程序运行时间:" +(endTime3-startTime3)+"ms");

4)entrySet利用for遍历

long startTime4=System.currentTimeMillis();for(Map.Entry entry4:map.entrySet()){ key=entry4.getKey(); value=entry4.getValue();}long endTime4 =System.currentTimeMillis();System.out.println("第四个程序运行时间:"+(endTime4-startTime4) +"ms"); 3.2遍历key

1)keySet利用Iterator遍历

long startTime1 =System.currentTimeMillis();Iterator iter = map.keySet().iterator();while (iter.hasNext()){ key=iter.next();}long endTime1 =System.currentTimeMillis();System.out.println("第一个程序运行时间:"+(endTime1-startTime1)+"ms");

2)keySet利用for遍历

long startTime2 =System.currentTimeMillis();for(String key2:map.keySet()){}long endTime2 =System.currentTimeMillis();System.out.println("第二个程序运行时间:"+(endTime2-startTime2)+"ms");

3)entrySet利用Iterator遍历

long startTime3=System.currentTimeMillis();Iterator> iter3 =map.entrySet().iterator();Map.Entry entry3;while (iter3.hasNext()){ key = iter3.next().getKey();}long endTime3 =System.currentTimeMillis();System.out.println("第三个程序运行时间:" +(endTime3-startTime3)+"ms");

4)entrySet利用for遍历

long startTime4=System.currentTimeMillis();for(Map.Entry entry4:map.entrySet()){ key=entry4.getKey();}long endTime4 =System.currentTimeMillis();System.out.println("第四个程序运行时间:"+(endTime4-startTime4) +"ms"); 3.3遍历value

1)keySet利用Iterator遍历

long startTime1 =System.currentTimeMillis();Iterator iter = map.keySet().iterator();while (iter.hasNext()){ value=map.get(iter.next());}long endTime1 =System.currentTimeMillis();System.out.println("第一个程序运行时间:"+(endTime1-startTime1)+"ms");

2)keySet利用for遍历

long startTime2 =System.currentTimeMillis();for(String key2:map.keySet()){ value=map.get(key2);}long endTime2 =System.currentTimeMillis();System.out.println("第二个程序运行时间:"+(endTime2-startTime2)+"ms");

3)entrySet利用Iterator遍历

long startTime3=System.currentTimeMillis();Iterator> iter3 =map.entrySet().iterator();Map.Entry entry3;while (iter3.hasNext()){ value=iter3.next().getValue();}long endTime3 =System.currentTimeMillis();System.out.println("第三个程序运行时间:" +(endTime3-startTime3)+"ms");

4)entrySet利用for遍历

long startTime4=System.currentTimeMillis();for(Map.Entry entry4:map.entrySet()){ value=entry4.getValue();}long endTime4 =System.currentTimeMillis();System.out.println("第四个程序运行时间:"+(endTime4-startTime4) +"ms");

5)values利用iterator遍历

long startTime5=System.currentTimeMillis();Iterator iter5=map.values().iterator();while (iter5.hasNext()){ value=iter5.next();}long endTime5 =System.currentTimeMillis();System.out.println("第五个程序运行时间:"+(endTime5-startTime5) +"ms");

6)values利用for遍历

long startTime6=System.currentTimeMillis();for(String value6:map.values()){}long endTime6 =System.currentTimeMillis();System.out.println("第六个程序运行时间:"+(endTime6-startTime6) +"ms"); 4、时间对比 4.1遍历key+value 4.2遍历key 4.3遍历value 5、总结

从上面的时间比较来看:

1)map的key采用简单形式和复杂形式时,查找的效率是不同的,简单的key值效率更高

2)当数据量大的时候,采用entrySet遍历key+value的效率要高于keySet

3)当我们只需要取得value值时,采用values来遍历效率更高

 
标签: 人文 效率 方式
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与爱美生活网(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • 文艺点的微信网名男 男人文艺高级好听的微信名
    文艺点的微信网名男 男人文艺高级好听的微信名
    1、伴你好眠2、耳边有你的浅唱3、慢慢坚强4、往事埋风中5、半夏柒微凉6、莫欺少年穷7、苏慕凉8、不懂烦人9、证明给你看10、美梦收藏家11、执手不离12、最美是初见13、仗剑倚青天14、淡意的优柔15、落魄的思念16、依然随风17、携月色
  • 微信网名女生成熟文艺 成熟优雅的女人文艺气质微信网名
    微信网名女生成熟文艺 成熟优雅的女人文艺气质
    1、淡淡相思,不知愁滋味2、安之若素,岁月静好3、素描つ那片天4、那朦胧的细雨5、等待不变规律中的美丽偶然6、漫天飞着蒲公英7、微凉徒眸意浅挚半离兮つ8、看那一叶春风9、因为你丶守候记忆10、等候下个花季11、浅安时光12、黑白琴键弹不出的
  • z 开头的火车是什么意思
    z 开头的火车是什么意思
    火车Z开头是直达特快列车,除了Z字母外,火车还有C开头的城际列车、D开头的动车组、G开头的高速列车、T开头的特快列车、K开头的快速列车、L开头的临时旅客列车、A开头的局管内临时旅客列车以及Y开头的旅游列车。Z开头的直达特快列车简称直特,是中
  • 自媒体没流量怎么办,掌握3点轻松涨粉
    自媒体没流量怎么办,掌握3点轻松涨粉
    新手做自媒体,普遍会遇到没有流量的情况,有的号甚至一个月两个月都没有流量,尤其是新号的养成,是让很多人都苦恼的。其实只要掌握三点就可以轻松做好自媒体,快速拉粉。(文/宋九九) 一、建立共鸣点 为什么别人的自媒体经常会成为爆点,吸引很多粉
  • 夏天白衬衣发黄怎么办(白醋酸味食用衣服)
    夏天白衬衣发黄怎么办(白醋酸味食用衣服)
    夏天白衬衣发黄,可以采用稀释的白醋水泡一泡衣服再洗,这可以让衣服变得十分好清洗,染色的污渍也掉的非常快。白醋是烹调的酸味辅料,色泽透亮、酸味醇正。主要原料有水、大米、食用酒精、食用盐等。能改善和调节人体的新陈代谢,作为饮食调料,需求量是很大
  • 怀孕四个月体重应该是多少正常(体重女性增长个月)
    怀孕四个月体重应该是多少正常(体重女性增长个
    怀孕四个月的孕妇,体重会增长4斤左右,比如怀孕前体重是120斤,加上4斤,就是124斤左右,这就是正常体重。女性怀孕到了4个月的时候,已经进入了孕中期。孕中期的时候,妊娠反应消失,女性开始大吃大喝,胃口极好。这个时候,女性的体重增长比较明显
  • 如何养草鱼(饲喂木薯草鱼吃完)
    如何养草鱼(饲喂木薯草鱼吃完)
    养草鱼的具体方法有以下一些:1、鱼苗在4月份清明节后放养,4月份的大地到处可见嫩芽嫩草,这时早上九点可以割田里细嫩的杂草来喂养鱼苗,饲喂量3个小时吃完为宜,下午4点喂饲料两小时吃完为宜。2、到了5月中旬农民种植的木薯可以截枝饲喂草鱼,也就是
  • 脉冲当量的单位是什么
    脉冲当量的单位是什么
    脉冲当量的单位是mm,相对于每一脉冲信号的机床运动部件的位移量称为脉冲当量,又称作最小设定单位。拓展:脉冲当量的大小视机床精度而定,一般为0.01到0.0005cm。脉冲当量影响数控机床的加工精度,它的值取得越小,加工精度越高。脉冲当量的定
  • 京东申诉进度在哪查询(申诉会在账户完毕)
    京东申诉进度在哪查询(申诉会在账户完毕)
    京东申诉进度查询的方法如下:    1、首先进入京东官网,并登录个人账户。    2、然后进入账户设置界面,并点击“账户安全”。    3、接着找到“账户申诉”选项,并点击“立即申诉”。    4、之后在账户申诉页面点击“申诉查询”即可查询
  • jq获取当前日期前一个月(javascript获取当前系
    默认功能 日期选择器(Datepicker)绑定到一个标准的表单 input 字段上。把焦点移到 input 上(点击或者使用 tab 键),在一个小的覆盖层上打开一个交互日历。选择一个日期,点击页面上的任意地方(输入框即失去焦点),或者点
点击排行