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