衆所周知,覆寫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