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"));
}*/
}}
还有其他的方法来遍历Map吗?希望有人帮我解答一下,谢谢
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);
}
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);
Object key =it.next();
System.out.println("key is "+key);
System.out.println("value is "+map.get(key));
}