map怎么遍历,map的遍历有哪些方法可用

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

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 = &34;+i;        value=&34;+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=&34;+(i*50);       value=&34;+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(&34;+(endTime1-startTime1)+&34;);

2)keySet利用for遍历

map的遍历有哪些方法可用,long startTime2 =System.currentTimeMillis();  for(String key2:map.keySet()){      value=map.get(key2);  }long endTime2 =System.currentTimeMillis();System.out.println(&34;+(endTime2-startTime2)+&34;);

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(&34; +(endTime3-startTime3)+&34;);

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(&34;+(endTime4-startTime4) +&34;);

1、这是最常见的并且在大多数情况下也是最可取的遍历方式,在键值都需要时使用。Map<Integer, Integer> map = new HashMap<Integer, Integer>();for (Map.Entry<Integer, Integer> entry : map.entrySet()) { System。.

3.2遍历key

1)keySet利用Iterator遍历

2)keySet利用for遍历

long startTime2 =System.currentTimeMillis();for(String key2:map.keySet()){}long endTime2 =System.currentTimeMillis();System.out.println(&34;+(endTime2-startTime2)+&34;);

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(&34; +(endTime3-startTime3)+&34;);

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(&34;+(endTime4-startTime4) +&34;);

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(&34;+(endTime1-startTime1)+&34;);

2)keySet利用for遍历

 long startTime2 =System.currentTimeMillis();for(String key2:map.keySet()){    value=map.get(key2);}long endTime2 =System.currentTimeMillis();System.out.println(&34;+(endTime2-startTime2)+&34;);

利用 iterator 和 Map.Entry 【方法1】稳居第一,领先 第二名差不多7s。第二名为 Eclipse (CS) collections 中的 MutableMap 位列第二,在大数据量下表现表现比较出色。指的注意的是之前在小数据量下表现。

3)entrySet利用Iterator遍历

4)entrySet利用for遍历

ava中map的常用遍历的具体方法有:一 、在for-each循环中使用entries来遍历。这是最常见的并且在大多数情况下也是最可取的遍历方式。在键值都需要时使用。二、 在for-each循环中遍历keys或values。如果只需要map中的键或者值。

long startTime4=System.currentTimeMillis();for(Map.Entry<String,String> entry4:map.entrySet()){    value=entry4.getValue();}long endTime4 =System.currentTimeMillis();System.out.println(&34;+(endTime4-startTime4) +&34;);

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(&34;+(endTime5-startTime5) +&34;);

6)values利用for遍历

long startTime6=System.currentTimeMillis();for(String value6:map.values()){}long endTime6 =System.currentTimeMillis();System.out.println(&34;+(endTime6-startTime6) +&34;);

map怎么遍历

4、时间对比

4.1遍历key+value

map怎么遍历

4.2遍历key

4.3遍历value

5、总结

从上面的时间比较来看:

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

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

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

来源:blog.csdn.net/zhangsify/article/details/52966094

上一篇 2023年02月04 21:15
下一篇 2023年02月05 12:00

相关推荐

  • 蚂蚁花呗怎么提高额度,支付宝怎么做花呗额度提升

    (1)余额宝存1000以上,每天都存,越多越好,额度每天增加,支付宝怎么做花呗额度提升,放三到五天以后再去开通花呗。存钱到余额宝以后去天猫买点小东西,用余额宝分期购买,三到五天后必出额度。(2)转账到

    2023年02月02 254
  • 大鱼号怎么注册,注册大鱼号自媒体平台

    注册大鱼号自媒体平台,大鱼号相信大家注册大鱼号流程都可以找的到pc端一目了然很好操作那么如果能在手机上操作当然会更方便那么大家看图吧1.大鱼号注册号以后需要和钉钉进行绑定才可以打开2.绑定好以后下滑最

    2023年01月23 287
  • 微博图片怎么去水印,微博去水印解析地址

    随着互联网的发展,大多数人会选择到网上“冲浪”来消磨时间,有时候我们会看到喜欢的图片或者搞笑的表情包,想把它保存下来之后可以分享到微博或者朋友圈,但是保存后却发现图片上有原创作者或平台的水印,或多或少

    2023年01月21 290
  • 家里的wifi密码忘了怎么办,wifi密码忘了连接不上怎么办

    wifi密码忘了连接不上怎么办,相信经常有朋友会遇到忘记自己路由器WiFi密码的情况,其实只要几个小方法就能找回来,看完这篇文章,1分钟立马找回来~首先,家里一般都有好几台手机或电脑,只要其中一台连接

    2023年01月20 261
  • 华为安全模式怎么退出,华为怎么关闭安全模式图解

    大家好,今天分享一篇来自小白系统官网(xiaobaixitong.com)的文章。华为是很受欢迎的手机品牌,小编身边就有很多朋友在使用华为品牌的手机。当华为手机安装了不兼容或是有问题的应用可能会导致手

    2023年01月21 245
  • 怎么免费下载文档

    网上查资料的时候,经常遇到需要注册登录或者付费的才能复制或者是下载,怎么免费下载需要付费的文档,遇到这种情况大多数人都会选择重新查。,其实完全没有必要,今天就教大家5种方法,免费下载全网任意资源,亲测

    2023年02月06 220
  • 世纪佳缘怎么注销账号

    专家:涉嫌违法,性质极为恶劣早在2020年11月,世纪佳缘、我主良缘等13家婚恋服务企业就联合签署《深化企业自律共筑行业诚信——13家婚恋服务企业倡议书》,承诺将健全和完善用户服务协议及用户隐私保护政

    2023年02月01 283
  • 页眉页脚怎么设置,word编辑页眉和页脚

    我们使用的PDF文档是一种电子文档的格式,如果需要更改其中的内容,往往需要编辑器去编辑,编辑PDF文档最常用就是编辑文本内容和编辑图片,那么,如果我们想要在文档中添加页眉或者页脚的时候该怎么设置呢?小

    2023年01月09 208
  • 微商怎么找客源

    大家好,我是周大大,专注线上实操引流。流量对我们在网上做生意的人来说,重要性不言而喻,而且引流的方法也有很多,今天咱们说说,在互联网中,你浪费了多少推广引流的机会。其实这些机会就是那么存在着,只不过,

    2023年01月11 217
  • qq登不上怎么办,QQ账号密码正确却登不进

    2022年7月最新实践成功登陆因手机恢复出厂默认值、QQ卸载重装、清除手机QQ全部数据后重新登陆造成账号正确、密码正确,QQ账号密码正确却登不进,但不能登陆。原因如下:,因手机恢复出厂默认值、QQ卸载

    2023年01月13 265
  • 硬盘怎么重新分区,已经分完区的硬盘重新分区

    电脑硬盘怎么合并分区?C盘空间太小,想要将D盘剩余的空间合并到C盘,怎么可以合并电脑硬盘分区且无损数据?如果你也在寻找电脑硬盘分区合并的方法,今天这篇文章一定要看看。我们的电脑上面,通常被分成了好几个

    2023年01月18 243
  • usb调试模式怎么打开,vivo手机usb调试模式怎么打开

    vivo手机usb调试模式怎么打开,不同手机的usb调试打开的方式都会有所不同,但是一般情况下,都可以通过手机设置,来打开手机usb调试。1、以华为手机为例,选择点击手机桌面上的“设置”按钮若当前使用

    2023年02月05 225
  • 虚拟光驱怎么用,我的Win10怎么没有虚拟光驱

    一、软件简介:DAEMONToolLite一个不错的虚拟光驱工具,支持加密光盘,支持ps,是一个先进的模拟备份并且合并保护盘的软件,可以备份SafeDisc保护的软件,可以打开CUE,ISO,IMB,

    2023年01月17 283
关注微信