import java.util.*;
public class Gerbil { /**
 * @param args
 */
int gerbilNumber;
public Gerbil(int gerbilNumber){
this.gerbilNumber = gerbilNumber;
}

int get(){
return this.gerbilNumber;
}
void hop(){
System.out.println("This is #" + get()
+ ". It is jumpping!");
}
public String toString(){
return "Gerbil #" + get();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
//List gerbils = new ArrayList();
Random rand = new Random();
Map map = new HashMap();
//Iterator it = map.entrySet().iterator();
Iterator it = map.keySet().iterator();
//for(int i = 0; i < 3; i++)
map.put("vovo",new Gerbil(rand.nextInt(20)));
map.put("bobo",new Gerbil(rand.nextInt(20)));
map.put("soso",new Gerbil(rand.nextInt(20)));
while (it.hasNext()) {//一个很好的遍历方法,不过此处有问题,
//不明白为何总打印不出任何东西?
    Map.Entry entry = (Map.Entry) it.next();
    Object key = entry.getKey();
    Object val = entry.getValue();
    System.out.println(key + "--->" + val);
} /*gerbils.add(new Gerbil(i));
Iterator e = gerbils.iterator();
//创建一个Iterator实例对象。
while(e.hasNext())
((Gerbil)e.next()).hop();
//这是使用Iterator遍历的方法
/*for(int i = 0; i < gerbils.size(); i++)
((Gerbil)gerbils.get(i)).hop();
这是用List遍历的方法。
*/
/*while(it.hasNext()){
System.out.println(((Map)it.next()).get("vovo"));
}*/

}}

解决方案 »

  1.   

    这个方法在哪儿出现了问题?为什么打印不出任何东西?
    还有其他的方法来遍历Map吗?希望有人帮我解答一下,谢谢
      

  2.   

    Map map = new HashMap();
    Iterator it = map.keySet().iterator();
    it里面什么东西都没有,你下面的while (it.hasNext()) 肯定不会有值的。
    可以用:
                      Random rand = new Random();
    Map map = new HashMap();
    map.put("vovo", new Gerbil(rand.nextInt(20)));
    map.put("bobo", new Gerbil(rand.nextInt(20)));
    map.put("soso", new Gerbil(rand.nextInt(20)));
    Iterator itKey = map.keySet().iterator();
    while (itKey.hasNext()) {// 健迭代
    System.out.println("Key --->" + itKey.next());
    }Random rand = new Random();
    Map map = new HashMap();
    map.put("vovo", new Gerbil(rand.nextInt(20)));
    map.put("bobo", new Gerbil(rand.nextInt(20)));
    map.put("soso", new Gerbil(rand.nextInt(20)));
    Iterator it = map.entrySet().iterator();
    while (it.hasNext()) {// 健迭代
    Map.Entry entry = (Map.Entry) it.next();
    Object key = entry.getKey();
    Object val = entry.getValue();
    System.out.println(key + "--->" + val);
    }
      

  3.   

    //it 是  keySet的跌代器
    Iterator it = map.keySet().iterator();//这里it.next() 只会返回keySet里的值
    Map.Entry entry = (Map.Entry) it.next();  //应该是//String key=it.next();
    //System.out.println(key + "--->" + map.getValue(key));
    你试试这个,
    以前的是:
    Object key = entry.getKey();
    Object val = entry.getValue();
    System.out.println(key + "--->" + val);
      

  4.   

    试试这个while (it.hasNext()) {
                               Object key =it.next();
    System.out.println("key is "+key);
    System.out.println("value is "+map.get(key));

    }