摘要:如果兩個對象根據(jù)方法是不相等的,則調(diào)用這兩個對象中任一個對象的方法,不要求產(chǎn)生不同的整數(shù)結(jié)果。
以java.lang.Object來理解JVM每new一個Object,它都會將這個Object丟到一個Hash哈希表中去,這樣的話,下次做Object的比較或者取這個對象的時候,它會根據(jù)對象的hashcode再從Hash表中取這個對象。這樣做的目的是提高取對象的效率。
具體過程是這樣:
new Object(),JVM根據(jù)這個對象的Hashcode值放入到對應(yīng)的Hash表對應(yīng)的Key上,如果不同的對象卻產(chǎn)生了相同的hash值,也就是發(fā)生了Hash key相同導(dǎo)致沖突的情況,那么就在這個Hash key的地方產(chǎn)生一個鏈表,將所有產(chǎn)生相同hashcode的對象放到這個單鏈表上串在一起。
比較兩個對象的時候,首先根據(jù)他們的hashcode去hash表中找他的對象,當(dāng)兩個對象的hashcode相同,那么就是說他們這兩個對象放在Hash表中的同一個key上,那么他們一定在這個key上的鏈表上。那么此時就只能根據(jù)Object的equal方法來比較這個對象是否equal。當(dāng)兩個對象的hashcode不同的話,肯定他們不能equal。
java.lang.Object中對hashCode的約定:
在一個應(yīng)用程序執(zhí)行期間,如果一個對象的equals方法做比較所用到的信息沒有被修改的話,則對該對象調(diào)用hashCode方法多次,它必須始終如一地返回同一個整數(shù)。
如果兩個對象根據(jù)equals(Object o)方法是相等的,則調(diào)用這兩個對象中任一對象的hashCode方法必須產(chǎn)生相同的整數(shù)結(jié)果。
如果兩個對象根據(jù)equals(Object o)方法是不相等的,則調(diào)用這兩個對象中任一個對象的hashCode方法,不要求產(chǎn)生不同的整數(shù)結(jié)果。但如果能不同,則可能提高散列表的性能。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/77812.html
摘要:介紹的作用是獲取哈希碼,也稱為散列碼它實際上是返回一個整數(shù)。所以具有相索引的對象,在該散列碼位置處存在多個對象,我們必須依靠的和本身來進(jìn)行區(qū)分。 1.hashCode介紹 hashCode() 的作用是獲取哈希碼,也稱為散列碼;它實際上是返回一個int整數(shù)。這個散列碼的作用是確定該對象在散列表中的索引位置,如果有看我的上一篇文章 什么是散列表,那么這里的散列碼就相當(dāng)于上文中根據(jù)首字母查...
摘要:如果根據(jù)方法得到兩個對象不相同,那么兩個對象的方法的結(jié)果不一定不相同,我們可以利用這一點來提高散列表的性能。最后回到文章開頭的問題,如何判斷兩個對象或值是否相同這個問題其實有兩方面的含義,一方面是判斷的方法,另一方面是判斷的效率。 Java中有很多場景需要判斷兩個對象或者兩個值,那么 判斷是否相同的依據(jù)是什么? 如何判斷是否相同呢? 為了解釋這個問題,我們從Java語言的根說起,那...
摘要:異步函數(shù)對象接口,包含和兩個成員方法。哈希計數(shù)在整個的源碼中都沒有找到和方法的調(diào)用,這兩個方法的具體作用是在原生中實現(xiàn)類式繼承和私有屬性一類的功能。 文件結(jié)構(gòu) utils/HashObject.ts文件:showImg(https://segmentfault.com/img/bVZpuq?w=642&h=472); 首先解釋一下文件結(jié)構(gòu)圖 __extends方法 通過原型對象模擬類...
摘要:它也是用來判斷兩個對象是否相等,所以也得分不同的情況來說明。什么是的作用是獲取哈希碼,也稱為散列碼它返回的一個整數(shù)。這個哈希碼的作用是確定該對象在哈希表中的索引位置。它定義在的中,這就意味著中的任何類都包含有函數(shù)。 前言 萬丈高樓平地起,今天的聊點基礎(chǔ)而又經(jīng)常讓人忽視的話題,比如==與equals()區(qū)別?為何當(dāng)我們重寫完equals()后也要有必要去重寫hashcode()呢? .....
閱讀 1805·2021-11-18 10:02
閱讀 3531·2021-11-16 11:45
閱讀 1797·2021-09-10 10:51
閱讀 2116·2019-08-30 15:43
閱讀 1386·2019-08-30 11:23
閱讀 1493·2019-08-29 11:07
閱讀 1899·2019-08-23 17:05
閱讀 1432·2019-08-23 16:14