1. 程式人生 > >總結,為什麼要重寫hashset的hashcode()和equals()?

總結,為什麼要重寫hashset的hashcode()和equals()?

  1. 看了非常多部落格,怕自己忘記了,通俗易懂的總結如下

     

    本人總結下:

    重寫前,比較地址,hashcode方法如果相等不一定是同一個物件,所以再用equals再比記憶體地址

    重寫後,比較值,重寫hashCode方法後,值相同的不同物件返回的是同樣的雜湊碼,但是值不同的不同物件可能也會有相同的雜湊碼,所以再用重寫的equals方法比值

     

    重寫前不符合人的思考(如果直接只用equals效率太低,hash比對比較快,最後使用equals方法以防萬無一失)