黑马程序员技术交流社区

标题: 关于Map集合遍历后输出时的一个问题 [打印本页]

作者: 黑马乔荣柱    时间: 2012-10-17 11:21
标题: 关于Map集合遍历后输出时的一个问题
本帖最后由 彼岸花 于 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()));
输出结果是错误的,而且会出现异常,这是为什么呢?
作者: 严海荣    时间: 2012-10-17 11:46
因为你打印的里面出现了 2个 it.next(),肯定是这个出问题了,it.next()就不断往下一个去了。key和value的值也不对应了。当基数个的时候,第一个it.next()就到底了,后面就要报错了。
作者: 黑马乔荣柱    时间: 2012-10-17 12:18
严海荣 发表于 2012-10-17 11:46
因为你打印的里面出现了 2个 it.next(),肯定是这个出问题了,it.next()就不断往下一个去了。key和value的 ...

谢谢,说的真好!!:handshake




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2