关于java中遍历map具体哪四种方式:

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

Map<Integer, Integer> map = new HashMap<Integer, Integer>();
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
}

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

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

Map<Integer, Integer> map = new HashMap<Integer, Integer>();
//遍历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<Integer, Integer> map = new HashMap<Integer, Integer>();
Iterator<Map.Entry<Integer, Integer>> entries = map.entrySet().iterator();
while (entries.hasNext()) {Map.Entry<Integer, Integer> entry = entries.next();System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
}

不使用泛型:

Map map = new HashMap();
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<Integer, Integer> map = new HashMap<Integer, Integer>();
for (Integer key : map.keySet()) {Integer value = map.get(key);System.out.println("Key = " + key + ", Value = " + value);

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

转载于:https://www.cnblogs.com/daijiabao/p/11218359.html

java --map遍历相关推荐

  1. java 轻量级map,java Map 遍历速度最优解

    java Map 遍历速度最优解 第一种: Map map = new HashMap(); Iterator iter = map.entrySet().iterator(); while (ite ...

  2. java map遍历_Java中Map集合的两种遍历方式

    Java中的map遍历有多种方法,从最早的Iterator,到java5支持的foreach,再到java8 Lambda,让我们一起来看下Java中Map集合的两种遍历方式! 关于遍历Map集合的几 ...

  3. Java map遍历

    在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都 ...

  4. java map 遍历取值_Map 遍历取值及jstl的取值

    学习了:http://blog.csdn.net/yanjiaye520/article/details/17354239 1.Java map的便利取值 Java代码 收藏代码 Map map = ...

  5. java map遍历删除_Java Map在遍历过程中删除元素

    map遍历判断筛选删除时 如果对map使用put.remove或clear方法(例如map.remove直接删除),那么迭代器就不再合法(并且在其后使用该迭代器将会有ConcurrentModific ...

  6. java调用xdotool_【转】java Map 遍历速度最优解

    第一种: Map map = new HashMap(); Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) { Ma ...

  7. java map遍历删除_HashMap的各种遍历和删除方式总结

    导读热词 前言 介绍HashMap遍历的几种方式 介绍HashMap迭代删除的几种方式 HashMap遍历的几种方式 一.迭代器遍历 迭代EntrySet @Test public void test ...

  8. Java Map遍历方式的选择

    1. 阐述 对于Java中Map的遍历方式,很多文章都推荐使用entrySet,认为其比keySet的效率高很多.理由是:entrySet方法一次拿到所有key和value的集合:而keySet拿到的 ...

  9. java map遍历_Java 循环遍历 Map

    import java.util.HashMap; import java.util.Iterator; import java.util.Map; public class MapTest { pu ...

  10. java map遍历最快_Java Map遍历速度最优解

    第一种: Map map = new HashMap(); Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) { Ma ...

最新文章

  1. React——Flow代码静态检查
  2. java面向对象特征及阐述,Java面向对象四个特征
  3. sqlserver数据库类型对应Java中的数据类型
  4. linux ssh 登录后 空闲断开 解决方法
  5. php文件上传及头像预览
  6. LeetCode204——count primes
  7. 直播预告:基于动态词表的对话生成研究 | PhD Talk #21
  8. routine tortoisesvn operations-1
  9. CSS--居中方式总结
  10. java排队系统模型,MMC排队系统模型
  11. 【bzoj 2541】 [Ctsc2000]冰原探险(BFS)
  12. 我的第一个WM5程序
  13. 计算机键盘操作与基指法,计算机键盘操作.doc
  14. Postgresql中xlog生成和清理逻辑
  15. java浪漫代码_程序员表白代码,用过的人都找到了对象...
  16. 差分进化算法_想用遗传算法?来看看这些已为你做好的开源优化框架
  17. 配置Samba服务器
  18. 如果你有一个机器人女友
  19. LDAP(1) 认知入门
  20. 高可用性系统在大众点评的实践与经验

热门文章

  1. monkey命令_Monkey 稳定性测试
  2. 客服机器人代码_企业微信群机器人如何快速集成?无需开发连接微信公众号,表单系统,钉钉,推广,CRM,客服系统和数据库...
  3. php图像生成和处理,PHP的gd库(图像生成和处理)的应用
  4. Java伪装csrss_结束伪装成系统进程名的进程的批处理
  5. 用python画圆形彩虹_python学习之GUI(pygame)
  6. 10、Android--技巧
  7. PHP和zookeeper结合实践
  8. 搜狐畅游一面(c++)
  9. 四种模式、五大架构 规划企业物联网蓝图
  10. Runtime Message Forwarding