第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

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 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優(yōu)惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消