天天看點

為什麼要覆寫Java中的equals和hashcode

  衆所周知,覆寫equals方法必須覆寫hashcode方法。那麼,為什麼要覆寫equals和hashcode方法呢?

     1.equals

    在list清單的list.contains()方法中,判斷是否包含用的是equals方法。是以,針對自定義對象應該重寫equals。

2.hashcode

     在hashMap的containsKey()方法中,判斷是否包含鍵(加入鍵是自定義對象)時,索引數組(hashmap由數組和連結清單組成--不懂的請自補)用到了對象的hashcode。是以,針對自定義對象也應該重寫hashcode。

   綜上:

       如果兩個對象相等(使用equals()方法),那麼必須擁有相同的哈希碼(使用hashCode()方法)。

        即使兩個對象有相同的哈希值(hash code),他們不一定相等.意思就是: 多個不同的對象,可以傳回同一個hash值。

參考: http://book.51cto.com/art/201202/317533.htm

http://blog.csdn.net/renfufei/article/details/14163329