原文:hashCode()相同,equals()也一定為true嗎?

首先,答案肯定是不一定。同時反過來 equals 為true,hashCode 也不一定相同。 類的 hashCode 方法和 equals 方法都可以重寫,返回的值完全在於自己定義。 hashCode 返回該對象的哈希碼值 equals 返回兩個對象是否相等。 關於 hashCode 和 equals 是方法是有一些 常規協定 : 兩個對象用 equals 比較返回true,那么兩個對象的has ...

2019-11-05 19:37 0 896 推薦指數:

查看詳情

倆個對象的hashCode()相同,則equals()也一定為true,對嗎?

不對,倆個對象的hashCode()相同equals()不一定為true。 代碼示例: 執行結果: 代碼解讀:很顯然"通話"和"重的"的hashCode()相同,然而equals()則為true,因為在散列表中,hashCode()相等即倆個鍵值對的哈希值相等 ...

Sun Mar 29 02:44:00 CST 2020 0 1136
兩個對象的 hashCode()相同,則 equals()也一定為 true,對嗎?

在java中,equalshashcode是有設計要求的,equals相等,則hashcode一定相等,反之則不然。 為何會有這樣的要求? 在集合中,比如HashSet中,要求放入的對象不能重復,怎么判定呢? 首先會調用hashcode,如果hashcode相等,則繼續調用equals ...

Fri Oct 11 18:31:00 CST 2019 0 2944
兩個對象用equals方法比較為true,它們的Hashcode相同嗎?

兩個對象用equals方法比較為true,它們的Hashcode相同嗎? 答:不一定相同。正常情況下,因為equals()方法比較的就是對象在內存中的值,如果值相同,那么Hashcode值也應該相同。但是如果不重寫hashcode方法,就會出現不相等的情況。 下面的話 ...

Sun Jun 11 18:18:00 CST 2017 0 9375
兩個對象值相同(x.equals(y) == true),但卻可以有不同的hashcode?

  這個得看情況,如果該對象重寫了equals方法,那么可能會出現equals相同,但hashcode不同的情況,但假如沒有重寫equals方法,那么它默認繼承是Object的equals方法,根據源碼可知,此時equals相同hashcode一定相同。 拋開 ...

Thu May 09 03:24:00 CST 2019 0 2040
問題:兩個對象值相同(x.equals(y) == true),但是可能存在hashCode不同嗎?

面試官的考察點 這道題仍然是考察JVM層面的基本知識,面試官認為,基本功扎實,才能寫出健壯性和穩定性很高的代碼。 涉及到的技術知識 (x.equals(y)==true),這段代碼,看起來非常簡單,但其實里面還是涉及了一些底層知識點的,首先我們基於equals這個方法進行探索 ...

Thu Oct 28 18:18:00 CST 2021 0 402
java 為什么重寫equals一定要重寫hashcode

前言 最近復習,又看到了這個問題,在此記錄和整理,通過例子來說明這種情況的原因,使大家可以清晰明白這個問題。 初步探索 首先我們要了解equals方法是什么,hashcode方法是什么。 equals方法 equals 是java的obejct類的一個方法,equals的源碼 ...

Mon Mar 30 02:21:00 CST 2020 0 745
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM