原文:JAVA 兩個對象不同為什么他們的hashcode有可能相同

hashCode是所有java對象的固有方法,如果不重載的話,返回的實際上是該對象在jvm的堆上的內存地址,而不同對象的內存地址肯定不同,所以這個hashCode也就肯定不同了。如果重載了的話,由於采用的算法的問題,有可能導致兩個不同對象的hashCode相同。 而且,還需要注意一下兩點: hashCode和equals兩個方法是有語義關聯的,它們需要滿足: A.equals B true gt ...

2018-06-11 19:18 1 5441 推薦指數:

查看詳情

如果兩個對象相同,他們的hashcode可能相同

HashSet和HashMap一直都是JDK中最常用的兩個類,HashSet要求不能存儲相同對象,HashMap要求不能存儲相同的鍵。 那么Java運行時環境是如何判斷HashSet中相同對象、HashMap中相同鍵的呢?當存儲了“相同的東西”之后Java運行時環境又將如何來維護呢? 在研究 ...

Thu Nov 24 05:07:00 CST 2016 0 1836
hashCode之一--兩個對象相同,有相同的hash code

兩個對象相同(x.equals(y) == true),則一定有相同的hash code。 這是java語言的定義: 因為:Hash,一般翻譯做“散列”,也有直接音譯為"哈希"的,就是把任意長度的輸入(又叫做預映射, pre-image),通過散列算法,變換成固定長度的輸出,該輸出 ...

Thu Aug 06 23:44:00 CST 2015 0 5530
兩個對象用equals方法比較為true,它們的Hashcode相同嗎?

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

Sun Jun 11 18:18:00 CST 2017 0 9375
兩個對象hashCode()相同,則 equals()也一定為 true,對嗎?

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

Fri Oct 11 18:31:00 CST 2019 0 2944
有沒有可能兩個不相等的對象有有相同hashcode

有可能,兩個不相等的對象可能會有相同hashcode 值,這就是為什么在 hashmap 中會有沖突。相等 hashcode 值的規定只是說如果兩個對象相等,必 須有相同hashcode 值,但是沒有關於不相等對象的任何規定。 ...

Sun Jul 12 20:52:00 CST 2020 0 954
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM