黑马程序员技术交流社区

标题: 关于toString方法的调用 [打印本页]

作者: 陈雨    时间: 2013-4-14 13:06
标题: 关于toString方法的调用
本帖最后由 陈雨 于 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);
                }
        }
}




作者: ①人←①城市    时间: 2013-4-14 13:32

Object的hashCode()默认返回是内存地址
要返回地址值,应该使用这个方法.
作者: 陈雨    时间: 2013-4-14 13:35
①人←①城市 发表于 2013-4-14 13:32
Object的hashCode()默认返回是内存地址
要返回地址值,应该使用这个方法.

其实我是有点纳闷,毕老师16最后一个视频,另一个事例里面用的List集合里面有复写toString方法,而这个却没有,但是打印出来的不是引用地址值,我在想到底是哪里调用了,还是说HashMap里面本来就有
作者: 董维明    时间: 2013-4-14 13:41
泛型中 你指定了String类型对象,操作的数据 自然只能是String类型,,当然在打印输出ID与name 时 调用的就是String 类型中的toString函数。
作者: 孙金鑫    时间: 2013-4-14 13:57
  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.                
复制代码





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