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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈雨 中级黑马   /  2013-4-14 13:06  /  1460 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 陈雨 于 2013-4-14 14:31 编辑

这段程序没用调用toString方法,打印的结果不是引用地址值,是不是哪里有复写并调用了toString方法?哪位大神解释下.是不是因为 public static void getStudentInfo(HashMap<String,String> roomMap) 中泛型用了String?

import java.util.*;
class Map07
{
        public static void main(String[] args)
        {
                HashMap<String,HashMap<String,String>> czbk= new HashMap<String,HashMap<String,String>>();
        
                HashMap<String,String> yure = new HashMap<String,String>();
               
                HashMap<String,String> jiuye = new HashMap<String,String>();
               
                czbk.put("yureban",yure);
                czbk.put("jiuyeban",jiuye);

                yure.put("01","zhangsan");
                yure.put("02","wangwu");


                jiuye.put("01","zhaoliu");
                jiuye.put("02","wangwu");
                //遍历czbk集合。获取所有的教室。
                Iterator<String> it = czbk.keySet().iterator();

                while(it.hasNext())
                {
                        String roomName= it.next();
                        HashMap<String,String> room =czbk.get(roomName);//room为HashMap中的值
                       System.out.println(roomName);
                        //把czbk内的键取出,再取出对应的值,这个值是内部HashMap集合"yure"和"jiuye"
                        getStudentInfo(room);
                }

        }
        public static void getStudentInfo(HashMap<String,String> roomMap)
        {
                Iterator<String> it =roomMap.keySet().iterator();//将roomMap对象中的所有的键取出

                while(it.hasNext())
                {
                        String id = it.next();//取出的键赋值给id
                        String name = roomMap.get(id);//根据id的键,取出对应的值
                        System.out.println(id+":"+name);
                }
        }
}



评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

4 个回复

倒序浏览

Object的hashCode()默认返回是内存地址
要返回地址值,应该使用这个方法.
回复 使用道具 举报
①人←①城市 发表于 2013-4-14 13:32
Object的hashCode()默认返回是内存地址
要返回地址值,应该使用这个方法.

其实我是有点纳闷,毕老师16最后一个视频,另一个事例里面用的List集合里面有复写toString方法,而这个却没有,但是打印出来的不是引用地址值,我在想到底是哪里调用了,还是说HashMap里面本来就有
回复 使用道具 举报
泛型中 你指定了String类型对象,操作的数据 自然只能是String类型,,当然在打印输出ID与name 时 调用的就是String 类型中的toString函数。
回复 使用道具 举报
  1. HashMap<String,HashMap<String,String>> czbk= new HashMap<String,HashMap<String,String>>();
  2.         
  3.                 HashMap<String,String> yure = new HashMap<String,String>();
  4.                
  5.                 HashMap<String,String> jiuye = new HashMap<String,String>();

  6. /*
  7. 另一个事例里面用的List集合里面有复写toString方法,和你这个不太一样,你这个直接用的<String,HashMap<String,String>> ,
  8. 我记得List集合里面好像是写的<Student String>,调用Student的时候,在其有复写toString()方法,
  9. HashMap里面嵌套了一个HashMap。。。。跟HashMap<Q,T>,没什么太大区别

  10. 你看看能一样吗?
  11. */
  12.                
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马