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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 马上都有 中级黑马   /  2014-5-20 15:59  /  2231 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


我知道用hashset存入元素的时候是根据哈希值来存的,然后把哈希值存入哈希表。那么,取值的时候是按照哈希值的大小来取的么?还是按照哈希表的顺序来取的啊

3 个回复

倒序浏览
应该是按大小来取的。
哈希表的原理:
 1,对对象元素中的关键字(对象中的特有数据),进行哈希算法的运算,并得出一个具体的算法值,这个值 称为哈希值。
 2,哈希值就是这个元素的位置。
 3,如果哈希值出现冲突,再次判断这个关键字对应的对象是否相同。如果对象相同,就不存储,因为元素重复。如果对象不同,就存储,在原来对象的哈希值基础 +1顺延。
 4,存储哈希值的结构,我们称为哈希表。
 5,既然哈希表是根据哈希值存储的,为了提高效率,最好保证对象的关键字是唯一的。
         这样可以尽量少的判断关键字对应的对象是否相同,提高了哈希表的操作效率。

评分

参与人数 1技术分 +1 收起 理由
天涯追梦 + 1 赞一个!

查看全部评分

回复 使用道具 举报
有条理,楼主回答的好详细、、、
回复 使用道具 举报
解答:HashSet集合取值是无序的,LinkedHashSet取值才是有序的,它的取值方法和存值得原理是一样的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马