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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李晓俊老师 黑马帝   /  2012-2-23 23:30  /  2661 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李晓俊 于 2012-2-24 19:53 编辑

集合存的是对象的地址值么,,那么HashSet和HashMap中的对象是按哈希表排序,那么是不是这两个集合里面存的不再是对象的地址值,而是地址值中的哈希值呢,这个一直有疑问

评分

参与人数 1技术分 +1 收起 理由
唐秀启 + 1

查看全部评分

4 个回复

倒序浏览
HashSet和HashMap集合中存的既可以说是地址,也可以说是哈希值。

因为存入对象的引用地址本身就是通过哈希值计算出来的。这两者对

于理解HashSet和HashMap是不影响的。

评分

参与人数 1技术分 +1 收起 理由
唐秀启 + 1

查看全部评分

回复 使用道具 举报
好像根据毕老师的视频讲解:HashSet和HashMap集合中存的是对象的地址,但是这个对象的地址值是按照哈希算法得到一个哈希值来存储到特定的内存空间上的,正是基于这个哈希表,才会有较高的性能,并且内存空间的容量越大,性能越高。1楼可简单理解为  HashSet和HashMap  占用一块大的内存空间并将其划分为类似仓库的方式来存储数据,而这个哈希值是仓库的柜子的编号。
回复 使用道具 举报
hashset和hashmap里存放的就是通过元素内存地址算出来的值,
LZ可以理解为集合里存放的是图书管理员管理的图书编号,你想找到某个元素,通过编号就可以很方便的找到
当然JAVA虚拟机通过编号找元素的方法都给你省了,直接可以给你返回元素,方便不
回复 使用道具 举报
实际上,HashSet 和 HashMap 之间有很多相似之处,对于 HashSet 而言,系统采用 Hash 算法决定集合元素的存储位置,这样可以保证能快速存、取集合元素;对于 HashMap 而言,系统 key-value 当成一个整体进行处理,系统总是根据 Hash 算法来计算 key-value 的存储位置,这样可以保证能快速存、取 Map 的 key-value 对。

在介绍集合存储之前需要指出一点:虽然集合号称存储的是 Java 对象,但实际上并不会真正将 Java 对象放入 Set 集合中,只是在 Set 集合中保留这些对象的引用而言。也就是说:Java 集合实际上是多个引用变量所组成的集合,这些引用变量指向实际的 Java 对象。

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