迭代输出遇到问题 “System.out.println((GerbilName)itm.next()+" -----> "+(Gerbil) hm.get((GerbilName)itm.next()));” 键和值不能对应上 不知道是什么原因 请高手指点import java.util.*;public class EX2 { public static void main(String[] args) throws Exception{ HashMap hm = new HashMap();
GerbilName gn = new GerbilName(2);
for(int i=0;i<30;i++)
hm.put(new GerbilName(i), new Gerbil(i));
System.out.println((Gerbil)hm.get(gn));
Set hms=hm.keySet();
Iterator itm = hms.iterator();
while(itm.hasNext()){
GerbilName gbn = (GerbilName)itm.next();
Gerbil gb = (Gerbil) hm.get(gbn);
//正常输出
System.out.println(gbn+" -----> "+gb);
//输出错误
System.out.println((GerbilName)itm.next()+" -----> "+(Gerbil) hm.get((GerbilName)itm.next()));
}
}}
class GerbilName{
String LENGTH;
String st="Gerbil";
public GerbilName(int LENGTH) {
this.LENGTH=Integer.toString(LENGTH);
}
public String toString(){
st=st+" "+LENGTH;
return st;
}
}
class Gerbil{
private int number;
public Gerbil(){number=0;}
public Gerbil(int number){this.number=number;}
public String toString(){
return "my number is:"+number+" "+"i am hopping";
}
}
GerbilName gn = new GerbilName(2);
for(int i=0;i<30;i++)
hm.put(new GerbilName(i), new Gerbil(i));
System.out.println((Gerbil)hm.get(gn));
Set hms=hm.keySet();
Iterator itm = hms.iterator();
while(itm.hasNext()){
GerbilName gbn = (GerbilName)itm.next();
Gerbil gb = (Gerbil) hm.get(gbn);
//正常输出
System.out.println(gbn+" -----> "+gb);
//输出错误
System.out.println((GerbilName)itm.next()+" -----> "+(Gerbil) hm.get((GerbilName)itm.next()));
}
}}
class GerbilName{
String LENGTH;
String st="Gerbil";
public GerbilName(int LENGTH) {
this.LENGTH=Integer.toString(LENGTH);
}
public String toString(){
st=st+" "+LENGTH;
return st;
}
}
class Gerbil{
private int number;
public Gerbil(){number=0;}
public Gerbil(int number){this.number=number;}
public String toString(){
return "my number is:"+number+" "+"i am hopping";
}
}
public static void main(String[] args) throws Exception{
HashMap hm = new HashMap();
GerbilName gn = new GerbilName(2);
for(int i=0;i<30;i++)
hm.put(new GerbilName(i), new Gerbil(i));
System.out.println((Gerbil)hm.get(gn));
Set hms=hm.entrySet(); //这句
for (Iterator itm = hms.iterator();itm.hasNext();) {
//以下2句
Map.Entry map1 = (Entry) iter.next();
System.out.println(map1.getKey()+":"+(map1.getValue().toString());
}
}
}
应该差不多吧可以根据你的需要改一下
public static void main(String[] args) throws Exception{
HashMap hm = new HashMap();
GerbilName gn = new GerbilName(2);
for(int i=0;i<30;i++)
hm.put(new GerbilName(i), new Gerbil(i));
System.out.println((Gerbil)hm.get(gn));
//这句
Set hms=hm.entrySet(); for (Iterator itm = hms.iterator();itm.hasNext();) {
//以下2句
Map.Entry map1 = (Entry) itm.next();
System.out.println(map1.getKey()+":"+(map1.getValue().toString());
}
}
}
不好意思 上一个中的itm错写成iter了 这个应该差不多
^_^
我用的是Set hms=hm.entrySet();而都是用Gerbil gb = (Gerbil) hm.get(gbn);这句取值查下API看看keySet()和entrySet()这两个方法就明白了
不知道对不对
再把System.out.println((GerbilName)itm.next()+" -----> "+(Gerbil) hm.get((GerbilName)itm.next这句去掉
因为这句运行迭代器指针下移会影响到上一句System.out.println(gbn+" -----> "+gb);的结果