Java Map对象遍历的4种技巧详解

更新:11-13 名人轶事 我要投稿 纠错 投诉

大家好,Java Map对象遍历的4种技巧详解相信很多的网友都不是很明白,包括也是一样,不过没有关系,接下来就来为大家分享关于Java Map对象遍历的4种技巧详解和的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!

How to Iterate Over a Map in Javajava中遍历Map的方法有很多种。让我们看一下最常见的方法及其优缺点。

由于Java中的所有映射都实现了Map接口,因此以下方法适用于任何映射实现(HashMap、TreeMap、LinkedHashMap、Hashtable等)

方法一 在for-each循环中使用entries来遍历这是最常见、在大多数情况下也是最理想的穿越方式。当同时需要键和值时使用。

Mapmap=new HashMap();

for (Map.Entryentry : map.entrySet()) {

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

}注意:for-each 循环是在Java 5 中引入的,因此该方法只能在Java 5 或更高版本中使用。如果迭代空映射对象,for-each 循环将抛出NullPointerException,因此在迭代之前应始终检查空引用。

方法二 在for-each循环中遍历keys或values。如果只需要map中的key或者value,可以通过keySet或者values来遍历,而不是使用entrySet。

Mapmap=new HashMap();

//遍历map中的key

for (整数键: map.keySet()) {

System.out.println("Key=" + key);

}

//遍历map中的值

for (整数值: map.values()) {

System.out.println("值=" + 值);

}这种方法的性能比entrySet遍历稍好(快10%),而且代码更干净。

方法三使用Iterator遍历使用仿制药:

Mapmap=new HashMap();

Iteratorentries=map.entrySet().iterator();

while (entries.hasNext()) {

Map.Entryentry=Entry.next();

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

不使用泛型:

映射map=new HashMap();

迭代器条目=map.entrySet().iterator();

while (entries.hasNext()) {

Map.Entry 条目=(Map.Entry)条目.next();

整数键=(整数)entry.getKey();

整数值=(整数)entry.getValue();

System.out.println("键=" + 键+ ", 值=" + 值);

}您还可以对键集和值应用相同的方法。

这种方法看似多余,但也有其优点。首先,这是旧版本Java 中遍历地图的唯一方法。另一个好处是你可以在遍历时调用iterator.remove() 来删除条目,而其他两种方法则不能。根据javadoc,如果您尝试在for-each 遍历中使用此方法,结果将是不可预测的。

从性能角度来看,该方法与for-each遍历(即方法2)的性能类似。

方法四、通过键找值遍历(效率低)Mapmap=new HashMap();

for (整数键: map.keySet()) {

整数值=map.get(key);

System.out.println("键=" + 键+ ", 值=" + 值);

}作为方法一的替代方案,这段代码看起来更干净;但实际上它非常慢并且效率低下。因为从key中获取值是一个耗时的操作(与方法1相比,该方法在不同的Map实现中慢了20%到200%)。如果您安装了FindBugs,它会检查并警告您低效的遍历。所以尽量避免使用它。

总结

用户评论

算了吧

想了解下Java Map里元素的操作技巧。

    有6位网友表示赞同!

话少情在

最近在项目中用到Map,学习这几种遍历方法挺有用!

    有17位网友表示赞同!

如你所愿

我一直觉得java的集合操作有点绕!

    有18位网友表示赞同!

走过海棠暮

分享文章内容真是太棒了,方便我学习新知识!

    有14位网友表示赞同!

tina

想看看不同遍历方法效率区别大不大?

    有11位网友表示赞同!

残留の笑颜

这4种方法都挺实用的呢,我会尝试应用到我的项目中!

    有10位网友表示赞同!

红尘滚滚

了解Map的遍历方法对写代码很有帮助。

    有8位网友表示赞同!

景忧丶枫涩帘淞幕雨

以后遇到需要遍历Map的时候可以直接参考这篇教程了。

    有16位网友表示赞同!

╯念抹浅笑

Java学习之路漫长,多积累经验和技巧才是关键!

    有20位网友表示赞同!

炙年

这篇文章很实用,讲解清楚易懂!

    有5位网友表示赞同!

龙吟凤

要掌握java编程语言需要勤加练习的哦!

    有17位网友表示赞同!

鹿叹

这几种方法的应用场景有什么区别吗?

    有19位网友表示赞同!

浅巷°

希望以后还能看到更多关于Java的数据结构和算法的文章!

    有15位网友表示赞同!

野兽之美

Map这个数据结构还是很常见的,熟练使用它可以提高编程效率。

    有6位网友表示赞同!

北朽暖栀

学习新的知识总是让人兴奋!

    有9位网友表示赞同!

罪歌

Java编程真是一门艺术!

    有10位网友表示赞同!

服从

这篇文章让我对Map的遍历方法有了更深的理解

    有15位网友表示赞同!

抓不住i

谢谢作者的分享,文章写的真好。

    有20位网友表示赞同!

軨倾词

Java编程技巧还是要不断积累和实践!

    有19位网友表示赞同!

命运不堪浮华

这篇文章给了我很大的启发。

    有16位网友表示赞同!

【Java Map对象遍历的4种技巧详解】相关文章:

1.蛤蟆讨媳妇【哈尼族民间故事】

2.米颠拜石

3.王羲之临池学书

4.清代敢于创新的“浓墨宰相”——刘墉

5.“巧取豪夺”的由来--米芾逸事

6.荒唐洁癖 惜砚如身(米芾逸事)

7.拜石为兄--米芾逸事

8.郑板桥轶事十则

9.王献之被公主抢亲后的悲惨人生

10.史上真实张三丰:在棺材中竟神奇复活

上一篇:若感情真挚,请避开张同学 下一篇:诚挚的祝福:传递温馨与关怀的言语之美