hashCode与equals

什么是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值相同,两个对象也不一定相同。

posted @ 2019-03-11 22:31  迷宫一样  阅读(165)  评论(0编辑  收藏  举报