1. 程式人生 > >Java HashMap 遍歷方式效能探討

Java HashMap 遍歷方式效能探討

JDK8之前,可以使用keySet或者entrySet來遍歷HashMap,JDK8中引入了map.foreach來進行遍歷。

原因:

keySet其實是遍歷了2次,一次是轉為Iterator物件,另一次是從hashMap中取出key所對應的value。而entrySet只是遍歷了一次就把key和value都放到了entry中,效率更高。如果是JDK8,使用Map.foreach方法。

1. keySet和entrySet

1.1 基本用法

keySet:

1 2 3 4 5 6 7 8 9 Map map=new HashMap(); Iterator it=map.keySet().iterator(); Object key; Object value; while(it.hasNext()){ key=it.next(); value=map.get(key); System.out.println(key+":"+value); }

entrySet:

1 2 3 4 5 6 7 8 9 10 Map map=new HashMap(); Iterator it=map.entrySet().iterator(); Object key; Object value; while(it.hasNext()){ Map.Entry entry = (Map.Entry)it.next(); key=entry.getKey(); value=entry.getValue(); System.out.println(key+"="+value); }

原始碼上看:

keySet:

1 2 3 4 final class KeyIterator extends HashIterator implements Iterator<K> { public final K next() { return