【正确答案】遍历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方法是等价的。
【答案解析】