黑马程序员技术交流社区

标题: HashCode的作用问题 [打印本页]

作者: 李长波    时间: 2012-11-25 00:42
标题: HashCode的作用问题
HashCode只存在于hash算法中,比如hashset,HashSet里的值是不能重复的,一个对象被存储进hashSet后,就不能修改参与计算该对象的hash值的字段了!修改了就容易造成内存溢出!这是基本的HashCode的用法!请问大家还有hashcode的其他作用吗?
作者: 古银平    时间: 2012-11-25 08:19
提高效率,hash算法会将存储区域分成若干个区域块,然后根据所计算的hash值将数据存储的某个区域中,当要查找该数据时,不用全部去对比比较,只需要根据hash值到相应的区域块中去查找,这样就很大的减少了查找范围,也就大大的提高了效率。如果存储的数据有10000,那么比较的话就需要10000次,但hashCode 根据计算的hash值将数据存储的不同的区域,将存储区分成很多区域块,那些区域的划分是根据hash算法所计算的hash值划分的,hashCode计算出hash值,就到相应的区域块中去查找,那么10000次比较就会变成100次,这样效率就很明显了。
作者: 徐军涛    时间: 2012-11-25 09:18
每个对象都会在内存中有地址,为了方便标示和查找都会有一个哈希值,即Object类中的hashCode()
就是用hash算法算出的哈希值,这个就是hashcode作用;
一个对象被存进HashSet后,就不能修改参与计算该对象的哈希值了;
如修改了,就保证不了HashSet元素的唯一性了,而不是造成内存溢出
作者: 王舒玮    时间: 2012-11-25 22:00
HashSet实现元素的唯一性是在添加元素时实现的, add方法底层依赖于HashCode和equals两个方法,并且,它要先走HashCode方法,当其值相等时再走equals方法。所以HashCode决定了HashSet能否实现元素唯一性。




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