java--map的遍历

java--map的遍历


方法一:for-each循环中使用entries来遍历(可取的遍历方式。在键值都需要时使用)


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循环在Java 5中被引入所以该方法只能应用于Java 5或更高的版本中。如果你遍历的是一个空的map对象,for-each循环将抛出NullPointerException,因此在遍历前你总是应该检查空引用


 


 


方法二for-each循环中遍历keysvalues。(主需要key或只需要value,该方法比entrySet遍历在性能上稍好(快了10%))


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);


}


 


 


方法三使用Iterator遍历(使用map的迭代器,在老版本的jdk中使用)


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);


}


 


 


方法四、通过键找值遍历(效率低,咋一看会和方法二差不多,仔细瞧,这里面是用key获取value,达到同时得到keyvalue


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,它会做出检查并警告你关于哪些是低效率的遍历。所以尽量避免使用。


 


 


总结


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


 


  • 发表于 2017-11-24 16:17
  • 阅读 ( 1640 )
  • 分类:Java

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
不写代码的码农
HJ社区-肖峰

IT

29 篇文章

作家榜 »

  1. 威猛的小站长 124 文章
  2. Jonny 65 文章
  3. 江南烟雨 36 文章
  4. - Nightmare 33 文章
  5. doublechina 31 文章
  6. HJ社区-肖峰 29 文章
  7. 伪摄影 22 文章
  8. Alan 14 文章