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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 范龙波 高级黑马   /  2013-5-7 21:58  /  1693 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 范龙波 于 2013-5-8 05:21 编辑

import java.util.*;



class  StudentDemo
{
        public static void main(String[] args)
        {
                HashMap<String,HashMap> CZBK=new HashMap<String,HashMap>();
                HashMap<String,Integer> YuReBan=new HashMap<String,Integer>();
                HashMap<String,Integer> JiuYeBan=new HashMap<String,Integer>();
                CZBK.put("第一层",YuReBan);
                CZBK.put("第二层",JiuYeBan);
                YuReBan.put("lisi01",26);
                YuReBan.put("lisi02",29);
                YuReBan.put("lisi03",26);
                YuReBan.put("lisi04",29);
                JiuYeBan.put("李四02",28);
                JiuYeBan.put("李四01",29);
                sop(YuReBan);
                sop(JiuYeBan);
                sop(CZBK);
                GetMap(YuReBan);                      //为什么只能打印出YuReBan的lisi02 和04 其他的打印不出来呢?
               
               



        }
        public static void sop(Object obj)
        {
                System.out.println(obj);
        }
        public static void GetMap(HashMap<String,Integer> tm)
        {
                Iterator<String> it=tm.keySet().iterator();
                while(it.hasNext())
                {
                        String name=it.next();
                        Integer age=tm.get(it.next());
                        System.out.println(name+"\t"+age);
                }
        }
        

}


3 个回复

倒序浏览
本帖最后由 杜超 于 2013-5-7 22:43 编辑

   Integer age=tm.get(it.next());这句话的问题

你把it.next()给位name就可以了,这里不能把方法作为键获取值的,
it.next()有特殊含义的,把他作为参数传进去得到的是下一个键,获取的是下一个键的值
所以只获取2个,而且这两个键和值不是对应的,你把年龄改成不一样的就看出来了

回复 使用道具 举报
Integer age=tm.get(it.next());里面的it.next()改成name,你用了两个it.next(),他就走了两个才打印一个
回复 使用道具 举报
啊,明白了,第二次犯这种错误了。谢了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马