摘要:的常規(guī)協(xié)定是在應(yīng)用程序執(zhí)行期間,在對(duì)同一對(duì)象多次調(diào)用方法時(shí),必須一致地返回相同的整數(shù),前提是將對(duì)象進(jìn)行比較時(shí)所用的信息沒(méi)有被修改。因此,重寫方法以后,原來(lái)的系統(tǒng)的方可能不太適用。
hashCode 的常規(guī)協(xié)定是: 在 Java 應(yīng)用程序執(zhí)行期間,在對(duì)同一對(duì)象多次調(diào)用 hashCode 方法時(shí),必須一致地返回相同的整數(shù),前提是將對(duì)象進(jìn)行 equals 比較時(shí)所用的信息沒(méi)有被修改。從某一應(yīng)用程序的一次執(zhí)行到同一應(yīng)用程序的另一次執(zhí)行,該整數(shù)無(wú)需保持一致。 如果根據(jù) equals(Object) 方法,兩個(gè)對(duì)象是相等的,那么對(duì)這兩個(gè)對(duì)象中的每個(gè)對(duì)象調(diào)用 hashCode 方法都必須生成相同的整數(shù)結(jié)果。 如果根據(jù) equals(java.lang.Object) 方法,兩個(gè)對(duì)象不相等,那么對(duì)這兩個(gè)對(duì)象中的任一對(duì)象上調(diào)用 hashCode 方法不 要求一定生成不同的整數(shù)結(jié)果。但是,程序員應(yīng)該意識(shí)到,為不相等的對(duì)象生成不同整數(shù)結(jié)果可以提高哈希表的性能。
因此不同的對(duì)象一般hashcode要不一樣。因此,重寫equals方法以后,原來(lái)的系統(tǒng)的hashcode方可能不太適用。一般要重寫hashcode方法。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/65310.html
摘要:抽象函數(shù)引發(fā)的關(guān)系是等價(jià)關(guān)系。所以當(dāng)且僅當(dāng)通過(guò)調(diào)用抽象數(shù)據(jù)類型的任何操作不能區(qū)分它們時(shí),兩個(gè)對(duì)象是相等的。必須為每個(gè)抽象數(shù)據(jù)類型適當(dāng)?shù)囟x操作。一般來(lái)說(shuō),在面向?qū)ο缶幊讨惺褂檬且环N陋習(xí)。 大綱 什么是等價(jià)性?為什么要討論等價(jià)性?三種等價(jià)性的方式==與equals()不可變類型的等價(jià)性對(duì)象契約可變類型的等價(jià)性自動(dòng)包裝和等價(jià)性 什么是等價(jià)性?為什么要討論等價(jià)性? ADT上的相等操作 ADT...
摘要:所以在對(duì)象沒(méi)有重寫這個(gè)方法時(shí),默認(rèn)使用此方法,即比較對(duì)象的內(nèi)存地址值。結(jié)果為可以發(fā)現(xiàn)不管對(duì)象的內(nèi)存地址是否相同并不影響其結(jié)果,所以類型比較的是數(shù)據(jù)值而不是內(nèi)存地址值。 showImg(https://segmentfault.com/img/bVbqpku?w=800&h=344); 今天朋友突然問(wèn)到一個(gè)問(wèn)題: 兩個(gè)對(duì)象使用x.equals(y)判斷結(jié)果為true時(shí),兩個(gè)對(duì)象的hash...
摘要:而這次在一的一方實(shí)體里重寫基類的和方法做去重,感覺(jué)用的代碼量減少了,又能提高效率,所以我這里對(duì)這兩個(gè)方法做些自己的理解。不相等的兩個(gè)對(duì)象,不一定不相等。不相等,那么是一定不等的。文章若有錯(cuò)誤之處,歡迎指出。 昨天寫hibernate一對(duì)多查詢的時(shí)候,用set集合來(lái)儲(chǔ)存值,我們都知道java中List集合是有序,可重復(fù)的,Set集合是無(wú)序,不可重復(fù)的。所以當(dāng)時(shí)寫這個(gè)查詢的時(shí)候果斷用Set...
摘要:簡(jiǎn)單的一句話結(jié)論就是保證你定義的的對(duì)象擁有相同的。方法實(shí)現(xiàn)等價(jià)關(guān)系自反性。即一個(gè)對(duì)象必須等于其自身。對(duì)于任意引用值和返回真時(shí),也一定為真?zhèn)鬟f性。發(fā)現(xiàn)一樣,調(diào)用方法繼續(xù)比較,發(fā)現(xiàn)個(gè)對(duì)象一樣。 簡(jiǎn)單的一句話結(jié)論就是:保證你定義的equal的對(duì)象擁有相同的hash code。1)兩個(gè)對(duì)象equals()為真,則它們的hashCode() 一定相同2)兩個(gè)對(duì)象hashCode()相同,equa...
閱讀 2079·2021-09-29 09:35
閱讀 676·2021-09-08 09:36
閱讀 3389·2021-09-03 10:30
閱讀 2109·2019-08-30 14:21
閱讀 2905·2019-08-30 11:18
閱讀 3306·2019-08-29 17:31
閱讀 3136·2019-08-29 17:29
閱讀 1300·2019-08-29 17:13