java 遍历map集合_Java遍历Map对象的四种方式

关于java中遍历map具体哪四种方式,请看下文详解吧。方式一:这是最常见的并且在大多数情况下也是最可取的遍历方式。在键值都需要时使用。Mapmap=newHashMap();for(Map.Entryentry:map.entrySet()){System.out.println(“Key=”+entry.getKey()+”,Value=”+entry.g…

大家好,又见面了,我是你们的朋友全栈君。

关于java中遍历map具体哪四种方式,请看下文详解吧。

方式一 :这是最常见的并且在大多数情况下也是最可取的遍历方式。在键值都需要时使用。

Map map = new HashMap();for (Map.Entryentry : map.entrySet()) {

System.out.println(“Key = ” + entry.getKey() + “, Value = ” +entry.getValue());

}

方法二 :在for-each循环中遍历keys或values。

如果只需要map中的键或者值,你可以通过keySet或values来实现遍历,而不是用entrySet。

Map map = new HashMap();//遍历map中的键

for(Integer key : map.keySet()) {

System.out.println(“Key = ” +key);

}//遍历map中的值

for(Integer value : map.values()) {

System.out.println(“Value = ” +value);

}

该方法比entrySet遍历在性能上稍好(快了10%),而且代码更加干净。

方法三使用Iterator遍历

使用泛型:

Map map = new HashMap();

Iterator> entries =map.entrySet().iterator();while(entries.hasNext()) {

Map.Entry entry =entries.next();

System.out.println(“Key = ” + entry.getKey() + “, Value = ” +entry.getValue());

}

不使用泛型:

Map map = newHashMap();

Iterator entries=map.entrySet().iterator();while(entries.hasNext()) {

Map.Entry entry=(Map.Entry) entries.next();

Integer key=(Integer)entry.getKey();

Integer value=(Integer)entry.getValue();

System.out.println(“Key = ” + key + “, Value = ” +value);

}

你也可以在keySet和values上应用同样的方法。

该种方式看起来冗余却有其优点所在。首先,在老版本java中这是惟一遍历map的方式。另一个好处是,你可以在遍历时调用iterator.remove()来删除entries,另两个方法则不能。根据javadoc的说明,如果在for-each遍历中尝试使用此方法,结果是不可预测的。

从性能方面看,该方法类同于for-each遍历(即方法二)的性能。

方法四、通过键找值遍历(效率低)

Map map = new HashMap();for(Integer key : map.keySet()) {

Integer value=map.get(key);

System.out.println(“Key = ” + key + “, Value = ” + value);

作为方法一的替代,这个代码看上去更加干净;但实际上它相当慢且无效率。因为从键取值是耗时的操作(与方法一相比,在不同的Map实现中该方法慢了20%~200%)。如果你安装了FindBugs,它会做出检查并警告你关于哪些是低效率的遍历。所以尽量避免使用。

总结

如果仅需要键(keys)或值(values)使用方法二。如果你使用的语言版本低于java 5,或是打算在遍历时删除entries,必须使用方法三。否则使用方法一(键值都要)。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/126300.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 无线信道特征_无线信道模型有哪几种

    无线信道特征_无线信道模型有哪几种目录1统计性模型(经验模型)1.1模型分类(1)按衰落分类(2)按路径损耗和延迟拓展分类1.2建模方法(1)方法一分类(2)方法二分类2确定模型2.1建模方法3半确定模型3.1建模方法4思维导图PDF、xmind格式下载5参考文献1统计性模型(经验模型)1.1模型分类(1)按衰落分类小尺度传播衰落模型描述小范围内信号的幅度和相位的快速衰落,在电波传播过程中,信号场强在短短(几个信号波长)或短时(秒级)上呈现出快速波动的状况,包括由移动台和基站相对运动造成多普勒频移引起的时间

    2022年9月23日
    2
  • 如何提高memcache的缓存命中率

    如何提高memcache的缓存命中率

    2022年2月13日
    55
  • c语言数组定义(详细)「建议收藏」

    c语言数组定义(详细)「建议收藏」数组:什么是数组:变量的组合,是一种定义变量的手段。定义:类型数组名[数量];数组定义后,默认值同样不确定,因此也需要初始化。intarr[5]<==>intnum1,num2,num3,num4,num5;使用:数组名[编号]编号(下标)从0开始,范围[0,数量-1]遍历:配合for循环从头到尾显示,循环变量i就当做数组的下标。intarr[5];f…

    2022年7月22日
    11
  • SELinux系列(五)——SELinux工作模式设置(getenforce、setenforce和sestatus命令)[通俗易懂]

    SELinux系列(五)——SELinux工作模式设置(getenforce、setenforce和sestatus命令)[通俗易懂]除了通过配置文件可以对SELinux进行工作模式的修改之外,还可以使用命令查看和修改SELinux工作模式。首先,查看系统当前SELinux的工作模式,可以使用getenforce命令;而如果想要查看配置文件中的当前模式和模式设置,可以使用sestatus命令,下面的代码显示了这两个命令:[root@localhost~]#getenforce#查询SELinux的运行模式Enforcing#当前的SELinux是强制模式[root@localhost~]#s.

    2022年6月27日
    40
  • 股票购买拐点在哪里

    股票购买拐点在哪里 股票购买拐点在哪里   逢低买,当然最好买在拐点。股价始向上的时候。   不过当主力刚开始吸筹时,反复震荡难免,没准还来一个诱空,这时介入心情极坏,毫无成就感,白受折磨。所以第一步,总是等主力先吃饱喝足,他是老大,我是小弟。   等主力吃够了喝足了,他会拉上去一点,最理想的介入点,就是等他洗盘结束时。当股价开始下跌,不必介入,再等,待拐点出现介入。   拐点在哪里呢?黄金分割?神奇数

    2022年6月26日
    31
  • hdu 1215 七夕节

    hdu 1215 七夕节

    2022年2月6日
    54

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号