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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 彼岸花 于 2012-10-17 12:19 编辑

import java.util.*;
class Demo
{
        public static void main(String[] args)
        {
                Map<Integer,String> map=new HashMap<Integer,String>();
                map.put(123,"abc");
                map.put(423,"akc");
                map.put(163,"obc");
                Set<Integer> keys=map.keySet();
                for(Iterator<Integer> it=keys.iterator();it.hasNext();){
                        int key=it.next();
                        String value=map.get(key);
                        System.out.println("KEY:"+key+"   VALUE:"+value);

                }
        }
}
上面红字部分是正常的方法,现在将红字部分换为:
System.out.println("KEY:"+it.next()+"   VALUE:"+map.get(it.next()));
输出结果是错误的,而且会出现异常,这是为什么呢?

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

2 个回复

倒序浏览
因为你打印的里面出现了 2个 it.next(),肯定是这个出问题了,it.next()就不断往下一个去了。key和value的值也不对应了。当基数个的时候,第一个it.next()就到底了,后面就要报错了。

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
严海荣 发表于 2012-10-17 11:46
因为你打印的里面出现了 2个 it.next(),肯定是这个出问题了,it.next()就不断往下一个去了。key和value的 ...

谢谢,说的真好!!:handshake
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马