什么是hashCode?
hashCode指通过Hash()处理得到的散列值,表示一个对象在Hash表中的位置。
什么是Hash()与Hash表?
Hash()函数是将数据进行摘要计算,将大小不一的数据源计算为统一长度的值,便于查找;
比如:如何从一个400人的班级中快速找到李明?
通过获取姓名的首字母,作为关键字,通过Hash()得到李明所在的物理地址hashCode(统一长度的值),再到Hash表中查找这一物理地址下存在的同学姓名,用equals方法比较姓名,最终找到李明
Hash表通过Hash()得到的hash值存入到表中,则为Hash表;
什么是散列值?
散列值为Hash值,是由Hash算法得到的一个数值。
hashCode有什么作用?
提高查寻速度
什么是equals方法?
在Java中equals方法是Object父类中定义的方法。用于比较两个对象是否相同,比较的是对象的物理地址是否相同,返回值类型是布尔类型
为什么将hashCode与equals联系起来?
通过hashCode来缩小查询范围,再通过equals比较统一hashCode下的对象是否相同,一般会重写equals方法,来比较对象内容是否相同
Hash表 | hashCode |
---|---|
A B C D | 1 |
E F G H | 2 |
O P Q R | 3 |
对于hashCode与equals最终得出的结论
如果x.equals(y)为true,那么x与y的hashCode值一定相同;
如果x对象与y对象的hashCode值相同,两个对象也不一定相同。