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

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

content 比對 不同 對象 對比 總結 text 一個 直接

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

    本人總結下:

    重寫前,比較地址,hashcode方法如果相等不一定是同一個對象,所以再用equals再比內存地址

    重寫後,比較值,重寫hashCode方法後,值相同的不同對象返回的是同樣的哈希碼,但是值不同的不同對象可能也會有相同的哈希碼,所以再用重寫的equals方法比值

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

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