一 、在for-each循环中使用entries来遍历。这是最常见的并且在大多数情况下也是最可取的遍历方式。在键值都需要时使用。
二、 在for-each循环中遍历keys或values。如果只需要map中的键或者值,你可以通过keySet或values来实现遍历,而不是用entrySet。
三、使用Iterator遍历。
四、通过键找值遍历(效率低)。
总结:如果仅需要键(keys)或值(values)使用方法二。如果你使用的语言版本低于java 5,或是打算在遍历时删除entries,必须使用方法三。否则使用方法一(键值都要)。
Map只是一个接口,只定义了具体的方法,没有去实现任何功能的Map的源码如下:
public abstract interface Map<K, V>
{
public abstract int size()
public abstract boolean isEmpty()
public abstract boolean containsKey(Object paramObject)
public abstract boolean containsValue(Object paramObject)
public abstract V get(Object paramObject)
public abstract V put(K paramK, V paramV)
public abstract V remove(Object paramObject)
public abstract void putAll(Map<? extends K, ? extends V>paramMap)
public abstract void clear()
public abstract Set<K>keySet()
public abstract Collection<V>values()
public abstract Set<Entry<K, V>>entrySet()
public abstract boolean equals(Object paramObject)
public abstract int hashCode()
public static abstract interface Entry<K, V>
{
public abstract K getKey()
public abstract V getValue()
public abstract V setValue(V paramV)
public abstract boolean equals(Object paramObject)
public abstract int hashCode()
}
}