装载自:Map的四种遍历
Map<Integer,Integer> map=new HashMap<Integer,Integer>();
第一种:同时取key值和value值
for(Map.Entry<String, Integer> entry:map.entrySet())
System.out.println(“key =”+ entry.getKey()+“,Value =”+ entry.getValue());
第二种:分别遍历取Key值和Value值
for(String k:map.keySet())
System.out.println("key="+k);
for(Integer v:map.values())
System.out.println(“values =”+ v);
该方法比entrySet遍历在性能上稍好(快了10%),而且代码更加干净。
先取key值,再取Value值
for (Integer key : map.keySet()) {
Integer value = map.get(key);
System.out.println("Key = " + key + ", Value = " + value);}
作为方法一的替代,它相当慢且无效率。因为从键取值是耗时的操作(与方法一相比,在不同的Map实现中该方法慢了20%~200%)。
第三种:使用遍历器Iterator
Set<Map.Entry<Character, Integer>> set = tm.entrySet();
Iterator<Map.Entry<Character, Integer>> entries = set.iterator();
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());
}
在老版本java中这是惟一遍历map的方式。另一个好处是,你可以在遍历时调用iterator.remove()来删除entries,另两个方法则不能。
从性能方面看,该方法类同于for-each遍历(即方法二)的性能。
总结
如果仅需要键(keys)或值(values)使用方法二。如果你使用的语言版本低于java 5,或是打算在遍历时删除entries,必须使用方法三。否则使用方法一(键值都要)。