課程
/后端開(kāi)發(fā)
/Java
/Java入門(mén)第二季 升級(jí)版
可以直接用哈希碼來(lái)判斷嗎 ?我感覺(jué)用哈希碼更容易些了。。。
2018-06-18
源自:Java入門(mén)第二季 升級(jí)版 9-9
正在回答
hashCode 是一個(gè)“散列值碼”。散列值,并不能表現(xiàn)其唯一性,但是有離散性,其意義在于類(lèi)似于進(jìn)行hashMap等操作時(shí),加快對(duì)象比較的速度,進(jìn)而加快對(duì)象搜索的速度。hashCode 和 equals的關(guān)系:兩個(gè)對(duì)象 equals的時(shí)候,hashCode必須相等,但hashCode相等,對(duì)象不一定equals。
最后明白兩點(diǎn)就行了:1.hashCode()方法存在的主要目的就是提高效率。2.在集合中判斷兩個(gè)對(duì)象相等的條件,其實(shí)無(wú)論是往集合中存數(shù)據(jù),還是從集合中取數(shù)據(jù),包括如果控制唯一性等,都是用這個(gè)條件判斷的,條件如下:??? 首先判斷兩個(gè)對(duì)象的hashCode是否相等,如果不相等,就認(rèn)為這兩個(gè)對(duì)象不相等,就完成了。如果相等,才會(huì)判斷兩個(gè)對(duì)象的equals()是否相等,如果不相等,就認(rèn)為這兩個(gè)對(duì)象不相等,如果相等,那就認(rèn)為這兩個(gè)對(duì)象相等。
最后總結(jié)一句話(huà)就是,hashCode()方法存在的主要目的就是提高效率,但是如果你想把對(duì)象放到散列存儲(chǔ)結(jié)構(gòu)的集合中時(shí),是必須要重寫(xiě)的。
舉報(bào)
課程升級(jí)!以終為始告別枯燥,在開(kāi)發(fā)和重構(gòu)中體會(huì)Java面向?qū)ο缶幊痰膴W妙
3 回答判斷對(duì)象是否相同
2 回答判斷兩個(gè)對(duì)象類(lèi)型是否相同?用 obj instanceof Dog 可以么?
3 回答判斷父類(lèi)對(duì)象類(lèi)型
4 回答重寫(xiě)equals的代碼中已經(jīng)用getclass判斷了兩個(gè)對(duì)象的類(lèi)型是否一樣為什么還要再?gòu)?qiáng)制轉(zhuǎn)換一次?
1 回答如何判斷是否需要實(shí)例化?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號(hào)-11 京公網(wǎng)安備11010802030151號(hào)
購(gòu)課補(bǔ)貼聯(lián)系客服咨詢(xún)優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2018-06-19
hashCode 是一個(gè)“散列值碼”。
散列值,并不能表現(xiàn)其唯一性,但是有離散性,其意義在于類(lèi)似于進(jìn)行hashMap等操作時(shí),加快對(duì)象比較的速度,進(jìn)而加快對(duì)象搜索的速度。
hashCode 和 equals的關(guān)系:
兩個(gè)對(duì)象 equals的時(shí)候,hashCode必須相等,但hashCode相等,對(duì)象不一定equals。
最后明白兩點(diǎn)就行了:
1.hashCode()方法存在的主要目的就是提高效率。
2.在集合中判斷兩個(gè)對(duì)象相等的條件,其實(shí)無(wú)論是往集合中存數(shù)據(jù),還是從集合中取數(shù)據(jù),包括如果控制唯一性等,都是用這個(gè)條件判斷的,條件如下:
??? 首先判斷兩個(gè)對(duì)象的hashCode是否相等,如果不相等,就認(rèn)為這兩個(gè)對(duì)象不相等,就完成了。如果相等,才會(huì)判斷兩個(gè)對(duì)象的equals()是否相等,如果不相等,就認(rèn)為這兩個(gè)對(duì)象不相等,如果相等,那就認(rèn)為這兩個(gè)對(duì)象相等。
最后總結(jié)一句話(huà)就是,hashCode()方法存在的主要目的就是提高效率,但是如果你想把對(duì)象放到散列存儲(chǔ)結(jié)構(gòu)的集合中時(shí),是必須要重寫(xiě)的。