equals 和hashCode 的區別

2021-08-18 10:40:17 字數 492 閱讀 5573

equals():反映的是或變數具體的值,即兩個物件包含的值——可能是物件的引用,也可能是值型別的值

hashcode():計算出物件例項的雜湊碼(根據記憶體位址返回的int型的數值),並返回雜湊碼,又稱為雜湊函式。根據object的hashcode都是唯一的;當然,當物件重寫了hashcode()方法時,結果就截然不同了。

之所以有hashcode方法,是因為在批量的物件比較中。hashcode要比equals來的快,很多集合都用到了hashcode,比如hashtable。

兩個object,如果equals()相等,hashcode()一定相等。

兩個object,如果hashcode()相等,equals()不一定相等(hash雜湊值有衝突的情況,但概率很低)。

在集合中,判斷兩個物件是否相等的規則是:

第一步.如果hashcode()相等,則檢視第二步,否則不象等;

第二步.檢視equal()是否相等,如果相等,則兩個object相等,否則還是不想等。

equals和hashcode的重寫

下面給出例項 package xuming class student public student string name,int age,int classnum 重寫equals方法 public boolean equals object o 測試引用o是都為null if o null 測...

equals 和hashCode 使用總結

equals package cn.galc.test public class testequals 沒有重寫equals class cat 先判斷比較物件是否為null 判斷比較物件是否為要比較類的例項 比較倆個成員變數是否完全相等。public class testequals 重寫equa...

hashCode 和equals 的區別

hashcode 和equals 都是object類中的方法 hashcode equals 不重寫時 返回的是物件的位址值 用來比較兩個物件的位址值是否相等 重寫後返回的是根據物件的成員變數,計算出的乙個整數 比較的是兩個物件的成員資訊是否相同 兩個物件通過equals 比較是相等的,那hashc...