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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

hashcode的作用

標(biāo)簽:
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无非就是用来进行确定对象的存储位置,以及对象之间进行比较,都是为哈希表的效率

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

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

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

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫(xiě)下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專(zhuān)欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消