谁来帮忙看看

mesiron 2017-10-15 06:54:52
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
...全文
91 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_40595272 2017-10-16
  • 打赏
  • 举报
回复
你这个是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
自由自在_Yu 2017-10-16
  • 打赏
  • 举报
回复
while (it.hasNext()) { Integer key=it.next(); String value = map.get(key); System.out.println(key + "...." + value); } it.next();只能用一次,后面的要用key代替,不然每用一次it.next();就会继续读取下一条了,所以你得到的数据不对应
sinat_34505678 2017-10-16
  • 打赏
  • 举报
回复
因为你用了map.get(),这时候获取了value而不是key

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧