当前位置:首页 > 生活百科

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

栏目:生活百科日期:2024-12-03浏览:0

1、由来

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

2、准备测试数据:

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

Map&<String,String&> map =new HashMap&<String,String&>();    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&<String,String&> map = new HashMap&<String,String&>();   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&<String&> 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&<Map.Entry&<String,String&>&> iter3 =map.entrySet().iterator();Map.Entry&<String,String&> 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&<String,String&> 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&<String&> 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&<Map.Entry&<String,String&>&> iter3 =map.entrySet().iterator();Map.Entry&<String,String&> 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&<String,String&> 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&<String&> 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&<Map.Entry&<String,String&>&> iter3 =map.entrySet().iterator();Map.Entry&<String,String&> 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&<String,String&> entry4:map.entrySet()){    value=entry4.getValue();}long endTime4 =System.currentTimeMillis();System.out.println("第四个程序运行时间:"+(endTime4-startTime4) +"ms");

5)values利用iterator遍历

 long startTime5=System.currentTimeMillis();Iterator&<String&>  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来遍历效率更高

上一篇:多邻国的IPO大考

下一篇:返回列表

“map怎么遍历删除(map集合遍历的三种方式)” 的相关文章

多邻国的IPO大考

在国内,外语学习贯穿了大部分人的前半生,从小学背字母表开始,到大学的英语四六级,追求更高的人还需要面对雅思、托福等国际语言考试,还有一些人群有另外的需求,比如学...

ios响应式编程优缺点(响应式编程应用场景)

本文将介绍一个响应式编程架构RxSwift,并结合使用Swift的函数式功能来编写更简洁、更表现力的代码,从而管理应用状态及并行任务。Swift及其函数式功能S...

ipad蓝牙连不上耳机(ipad无法发现蓝牙设备)

我们可以将蓝牙鼠标或触控板连接到iPad,那该如何操作呢?今天小编给大家带来了具体的操作方法,需要的朋友欢迎参考操作!开始之前要将蓝牙配件连接到iPad,iPa...

一般纳税人申请条件有哪些,一般纳税人注册条件

当前,伴随着创业者创办公司数量的日益增长,很多企业在对纳税人类型进行选择时,都想要成为一般纳税人。可以说,成为一般纳税人,不仅有利于企业做大做强,同时还能够在企...

什么鱼竿好用又不贵,口碑最好的四类国产鱼竿推荐

今天这篇文章把鱼竿分成了几大类,费了我不少时间,推荐的东西也是我本人比较熟悉的,希望对你们以后买竿有些许参考作用,如果觉得我写的不好也多多包涵,整理出来不容易第...

ps投影怎么做投影(给物体添加投影的步骤)

本例为PS系列基础教程,在本文中我们将了解Photoshop图层样式中的投影,教程详细讲解了投影的各个选项的作用以及设置,对PS初学者了解PS的图层样式有很大帮...

qq音乐直播怎么关闭(唱歌的直播平台排行)

描述:听影视剧热歌,去QQ音乐横跨好几个时代、充满烧脑元素的穿越爱情剧,描述房产中介工作日常的都市职场剧,虐心的架空古风剧……很难想象,是什么能把这三者联系在一...

360浏览器怎么升级版本(浏览器版本升级方法介绍)

1、系统中明明已经更新了flash的版本,但是打开360浏览器依然显示是旧版的版本号,那么应该如何将flash版本更新呢,两种方法,一是等待360浏览器的版本更...

seo需要做什么,seo推广的工作内容

作为一个专业的SEO公司级领导,其SEO优化专家告诉大家:SEO是一项需要足够耐心和细致的脑力劳动,主要分为八个步骤。第一步是找到关键词。这是SEO优化中最重要...

国内虚拟主机那家好(虚拟主机排行)

免费的虚拟主机哪家好?目前市场上有少量的服务商,提供免费的虚拟主机。俗话说:一分钱一分货,免费的真的好么?在使用过程中,有没有其他的限制要求、隐形消费等,就不好...