java中hashcode()方法有什麼做用呢?

hashcode這個方法是用來鑑定2個對象是否相等的。
那你會說,不是還有equals這個方法嗎?

不錯,這2個方法都是用來判斷2個對象是否相等的。可是他們是有區別的。

通常來說,equals這個方法是給用戶調用的,若是你想判斷2個對象是否相等,你能夠重寫equals方法,而後在代碼中調用,就能夠判斷他們是否相等了。簡單來說,equals方法主要是用來判斷從表面上看或者從內容上看,2個對象是否是相等。舉個例子,有個學生類,屬性只有姓名和性別,那麼咱們能夠認爲只要姓名和性別相等,那麼就說這2個對象是相等的。

hashcode方法通常用戶不會去調用,好比在hashmap中,因爲key是不能夠重複的,他在判斷key是否是重複的時候就判斷了hashcode這個方法,並且也用到了equals方法。這裏不能夠重複是說equals和hashcode只要有一個不等就能夠了!因此簡單來說,hashcode至關因而一個對象的編碼,就好像文件中的md5,他和equals不一樣就在於他返回的是int型的,比較起來不直觀。咱們通常在覆蓋equals的同時也要覆蓋hashcode,讓他們的邏輯一致。舉個例子,仍是剛剛的例子,若是姓名和性別相等就算2個對象相等的話,那麼hashcode的方法也要返回姓名的hashcode值加上性別的hashcode值,這樣從邏輯上,他們就一致了。

要從物理上判斷2個對象是否相等,用==就能夠了 ide



HashCode() is explicitly used in methods where hash functions are used, like hashTable() etc.

One should always override hashCode() when overriding equals(). Unexpected behaviour will occur if you don't do so.

HashCode() should have the same value whenever equals() returns true.
編碼

相關文章
相關標籤/搜索