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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 郭阳 于 2012-9-25 13:41 编辑

HashMap<Student,Teacher> hm=new HashMap<Student,Teacher>();
                hm.put(new Student("student01",11),new Teacher("teacher01",21));
                hm.put(new Student("student02",12),new Teacher("teacher02",22));
                hm.put(new Student("student03",13),new Teacher("teacher03",23));
                Set<Map.Entry<Student,Teacher>> hs=hm.entrySet();
                Iterator<Map.Entry<Student,Teacher>>  it=hs.iterator();
                while(it.hasNext())
                {
                        Map.Entry<Student,Teacher> me=it.next();
                        Student s=me.getKey();
                        Teacher t=me.getValue()·········································}
----------------------------------------------------------------------------------------------------------------------------------------
谁能说说这段代码在堆栈中的情况啊
Map集合创建的时候,对象是先封装在Map.Entry对象中再存的还是?
Map.Entry对象me是一个引用吗?那他实体中存的是学生实体还是学生引用?



4 个回复

倒序浏览
Map.Entry<Student,Teacher> me=it.next(); 我觉得me是一个引用
Map.Entry对象me是一个引用吗?那他实体中存的是学生实体还是学生引用?//实体中存放的应该是键值对的关系,毕老师讲的那张结婚证书!!{:soso_e113:}

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
map.entry是map集合的一个内部类。对象应该存在map集合中,
map.entry存的是集合中元素的映射关系,就像结婚证一样,有了这关系,就能找到相应的人。然后同过这关系,上集合中直接找元素
因为内部类持有外部类的引用!我理解是这样的  还请各位指教

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
[/这个就是和set集合类似的 map是set的扩展,把map的key-value看成一个整体,他就是set集合的key.同理获取key-value就用到entry 和set获取key是一样的

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
1)栈与堆都是Java用来在Ram中存放数据的地方,Java自动管理栈和堆,程序员不能直接地设置栈或堆。
Java的堆是一个运行时数据区,类的对象从中分配空间。这些对象通过new、newarray等指令建立,它们不需要程序代码来显式的释放。
堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的,Java的垃圾收集器会自动收走这些不再使用的数据。(缺点是存取速度较慢)
最主要的就是栈数据可以共享的。
2)Map集合创建的时候,对象是以键值对的方式来存的,说明它就是一个整体。而Map.Entry它本身就是一个Set集合,它通过这个Set的键来取得Map中的value值速度会快,这个参见视频中讲到的存储图!
3)Map.Entry对象me是一个引用,就相当于一个集合,它把指针it.next()取到的数据放到me里面了.

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

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