论述题 19.  请给出遍历HashMap的四种方法。
【正确答案】遍历HashMap的四种方法如下:
   1)foreach map.entrySet()。
   2)显式调用map.entrySet()的集合迭代器。
   3)foreach map.keySet(),再调用get方法获取。
   4)foreach map.entrySet(),用临时变量保存map.entrySet()。
   以下将通过示例代码来说明这4种方法。
   import java.util.HashMap;
   import java.util.Iterator;
   import java.util.Map;
   import java.util.Map.Entry;
   import java.util.Set;
   public class Test{
   public static void tranverse 1(Map<String,String>map)
   {
   for(Entry<String,String>entry:map.entrySet()){
   System.out.println(entry.getKey()+","+entry.getValue());
   }
   }
   public static void tranverse2(Map<String,String>map)
   {
   Iterator<Map.Entry<String,String>>iterator=map.entrySet().iterator();
   while(iterator.hasNext()){
   Map.Entry<String,String>entry=iterator.next();
   System.out.println(entry.getKey0+","+entry.getValue());
   }
   }
   public static void tranverse3(Map<String,String>map)
   {
   for(String key:map.keySet()){
   System.out.println(key+","+map.get(key));
   }
   }
   public static void tranverse4(Map<String,String>map)
   {
   Set<Entry<String,String>>entrySet=map.entrySet();
   for(Entry<String,String>entry:entrySet){
   System.out.println(entry.getKey()+","+entry.getValue());
   }
   }
   public static void main(String args[])
   {
   Map<String,String>map=new HashMap<String,String>();
   map.put("key1","value1");
   map.put("key2","value2");
   tranverse1(map);
   tranverse2(map);
   tranverse3(map);
   tranverse4(map);
   }
   }
   上述代码中,tranverse3方法多了一个get方法的调用,因此,效率可能会稍微低点,这种遍历方法适合只使用key的情况。对于使用keySet与entryset的遍历方法而言,keySet需要首先把key转换为iterator,然后根据key在map中取出value,也就是说,需要两个操作,而entryset只一次操作就把key和value都取出到entry中,因此,具有更高的效率。此外,foreach与iterator方法是等价的。
【答案解析】