A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘海浩 中级黑马   /  2013-3-10 10:19  /  1837 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.util.*;
public class MaoTest01 {
        public static void main(String[] args) throws ClassCastException{
                Map persons = new HashMap();
               
                persons.put("110", "JAVA");
                persons.put("111", "AVA");
                persons.put("120", "VA");
                persons.put("114", "A");

                                Set keys = persons.keySet();
               
                Iterator it = keys.iterator();
                while(it.hasNext()){
                        Object id = it.next();
                       
                        Object name = persons.get(it.next());
                        System.out.println(id+"--->"+name);
                }
               
               
        }

}


不清楚为什么运行结果中id和name的值不对应,而且只输出了两行

评分

参与人数 1技术分 +1 收起 理由
郭孟涛 + 1

查看全部评分

7 个回复

倒序浏览
很简单,    Object id = it.next();中的it.next(),和    Object name = persons.get(it.next());中 的it.next()是不一样的
就好比第一个it.next()是第一个数,而第二个it.next()就是第二个数了。
应该把 Object name = persons.get(it.next());中的it.next()换成id  就行了。

评分

参与人数 1技术分 +1 收起 理由
郭孟涛 + 1 赞一个!

查看全部评分

回复 使用道具 举报
majia1410 发表于 2013-3-10 11:02
很简单,    Object id = it.next();中的it.next(),和    Object name = persons.get(it.next());中 的it. ...

帅哥,多谢了,我明白这么写可以正确输出,不是很清楚为啥第一次it.next()和第二次的不一样,而while只循环两次。是不是while中的it也改变了
回复 使用道具 举报
  1. import java.util.*;
  2. public class MaoTest01 {
  3.         public static void main(String[] args) throws ClassCastException{
  4.                 Map persons = new HashMap();
  5.                
  6.                 persons.put("110", "JAVA");
  7.                 persons.put("111", "AVA");
  8.                 persons.put("120", "VA");
  9.                 persons.put("114", "A");

  10.                                 Set keys = persons.keySet();
  11.                
  12.                 Iterator it = keys.iterator();
  13.                 while(it.hasNext()){
  14.                         Object id = it.next();
  15.                         
  16.                         Object name = persons.get(it.next());
  17.                         //这里应该为id因为it.next()为Iterator的指针,每调用一次.next,
  18.                         //指针会向后移动一次,由于你前面已经调用了.next()所以只打印了两次
  19.                         System.out.println(id+"--->"+name);
  20.                 }
  21.                
  22.                
  23.         }

  24. }


复制代码
回复 使用道具 举报
张学林 发表于 2013-3-10 12:05

多谢了      
回复 使用道具 举报
majia1410 发表于 2013-3-10 11:02
很简单,    Object id = it.next();中的it.next(),和    Object name = persons.get(it.next());中 的it. ...

请改成自己的名字~

论坛改名申请通道
回复 使用道具 举报
既然问题解决了,下回别忘了将帖子分类改成【已解决】,这次帮你改了~
回复 使用道具 举报
陈丽莉 发表于 2013-3-10 19:22
既然问题解决了,下回别忘了将帖子分类改成【已解决】,这次帮你改了~

谢谢,会记得。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马