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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李长波 中级黑马   /  2012-11-25 00:42  /  1194 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

HashCode只存在于hash算法中,比如hashset,HashSet里的值是不能重复的,一个对象被存储进hashSet后,就不能修改参与计算该对象的hash值的字段了!修改了就容易造成内存溢出!这是基本的HashCode的用法!请问大家还有hashcode的其他作用吗?

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

3 个回复

正序浏览
HashSet实现元素的唯一性是在添加元素时实现的, add方法底层依赖于HashCode和equals两个方法,并且,它要先走HashCode方法,当其值相等时再走equals方法。所以HashCode决定了HashSet能否实现元素唯一性。
回复 使用道具 举报
每个对象都会在内存中有地址,为了方便标示和查找都会有一个哈希值,即Object类中的hashCode()
就是用hash算法算出的哈希值,这个就是hashcode作用;
一个对象被存进HashSet后,就不能修改参与计算该对象的哈希值了;
如修改了,就保证不了HashSet元素的唯一性了,而不是造成内存溢出

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
提高效率,hash算法会将存储区域分成若干个区域块,然后根据所计算的hash值将数据存储的某个区域中,当要查找该数据时,不用全部去对比比较,只需要根据hash值到相应的区域块中去查找,这样就很大的减少了查找范围,也就大大的提高了效率。如果存储的数据有10000,那么比较的话就需要10000次,但hashCode 根据计算的hash值将数据存储的不同的区域,将存储区分成很多区域块,那些区域的划分是根据hash算法所计算的hash值划分的,hashCode计算出hash值,就到相应的区域块中去查找,那么10000次比较就会变成100次,这样效率就很明显了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马