兩個對象相等,對兩個對象分別調用equals方法都返回true,如果兩個對象相等,則hashcode一定也是相同的,假如只重寫equals而不重寫hashcode,那么hashcode方法就是Object默認的hashcode方法,由於默認的hashcode方法是根據對象的內存地址經哈希算法得來的,兩者的hashcode不一定相等。
在java的集合中,判斷兩個對象是否相等的規則是:
1.判斷兩個對象的hashCode是否相等
如果不相等,認為兩個對象也不相等,完畢,所以如果hashcode()沒有被重寫,在set和map中兩個相等對象的key就會判斷為不相等
如果相等,轉入2
2.判斷兩個對象用equals運算是否相等
如果不相等,認為兩個對象也不相等
如果相等,認為兩個對象相等(equals()是判斷兩個對象是否相等的關鍵)