为了账号安全,请及时绑定邮箱和手机立即绑定

hashcode的作用

标签:
Java

    真感觉这篇文章没必要记录,还是写下吧。。。

    首先hashCode()方法被设计在Object类中,说明是希望所有对象都能实现该方法,该方法是会返回一个对应于

当前对象的整数,理论上是需要不同对象的hashCode不相同。之所以所有对象都实现该方法是为了将来对象在查找时变得

快捷。

    Java中的集合类hashMap、hashSet底层的实现都是使用的哈希表,之所以采用哈希表,是因为他能克服链表和二叉树

等数据结构在查询上的效率问题,哈希表的存储就是根据对象的哈希值,确定他的存储位置,试想,假如所有对象的hashCode

都不相同那我们对其操作效率是不是特别高?可以通过他们的哈希值迅速定位他们的存储位置,然后进行相应操作。然而这是

理想状态,仅仅通过hashcode并不能将所有对象区分开来,有可能会出现对象不同,hashcode却相同。为了充分将对象区分开,

Object类中还有一个方法equals(),该方法便是在当对象的hashcode相同时,还要进一步调用该对象的equals方法进行比较。


    通过上面分析可知,hashCode方法和equals()方法往往都是配合使用的,当我们重写了equals方法时,必须要重写hashCode

方法,这是java中的一条规范,原因也很简单,假如此处有A,B两个对象,他们内容相同,当我们在重写equals之前,equals值是

false,因为重写之前equals相当于==,他们的hashCode也不相同,因为为重写前的hashCode值与对象存储位置有关,重写之后equals

返回了true,而此时他们的hashCode值仍然不相同,这明显就不符合逻辑,因为equals相同的对象hashCode值肯定相同,因此重写

equals的同时,有必要重写hashCode(根据自己的需求),总之两者要同时进行。

    通过上面的分析,我们发现hashCode无非就是用来进行确定对象的存储位置,以及对象之间进行比较,都是为哈希表的效率

进行服务的,都是为了查找的快捷。。。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消