public class MapDemo { public static void main(String[] args) {
// TODO Auto-generated method stub
Map<Integer,String>map=new HashMap<Integer,String>();
//method(map);
method_01(map); }
public static void method_01(Map<Integer, String> map) {
// TODO Auto-generated method stub
map.put(6, "wangwu");
map.put(3, "wangcai");
map.put(4, "lisi");
map.put(8, "zhaoliu");

Set<Integer> KeySet=map.keySet();
Iterator<Integer> it=KeySet.iterator();

while(it.hasNext()){
//Integer  key=it.next();   

String value=map.get(it.next());
System.out.println(it.next()+"...."+value);

}

}
}Integer  key=it.next();   用这个的时候,it.next()赋值给key,四个值都打印;用上面的代码,不赋值给key就只打印4....wangcai和8....wangwu

解决方案 »

  1.   

    因为你用了map.get(),这时候获取了value而不是key
      

  2.   

    你这个是Set加迭代方法快速遍历Map, Integer  key=it.next(); 调用这行代码得到key值  但是你没有用key这个变量 而是调用了it.next();导致调用的是又下一个key值,所以输出不全不对而且报错 解决办法:去掉Integer  key=it.next();前面的注释  String value=map.get(it.next());System.out.println(it.next()+"...."+value);这两行代码中的it.next()  改为变量key
      

  3.   

    while (it.hasNext()) {
    Integer key=it.next(); String value = map.get(key);
    System.out.println(key + "...." + value); }it.next();只能用一次,后面的要用key代替,不然每用一次it.next();就会继续读取下一条了,所以你得到的数据不对应