-
需求
在Java開發時,很多時候會自定義一些實體,並且會產生判斷兩個自定義實體是否相等的操作;此時如果直接使用Java原生的equals方法很多時候會返回false(因為比較的兩個Object的引用是否相等),但是我們實際的需求僅僅是比較兩個自定義對象的某些屬性值是否是相同的。
-
做法
要達到這樣的目的,我們就要在自定義的實體類中進行equals方法的重寫(在其中實現自己的相等判斷邏輯)。
要注意:在重寫equals的同時,也需要重寫hashcode方法。
-
重寫hashcode的原因
hashcode方法主要用在集合框架中,目的是為了快速比較道兩個對象是否相等(符合自定義要求,用某些屬性值是否相等代表該對象是否相等),因為集合框架中的對象很多,每個都使用equals比較效率很差。
每個對象都有一個hashcode,規定:
A.內容相同的對象hashcode肯定相等
B.內容不相同的對象hashcode可能相等也可能不相等
所以如果兩個自定義對象的hashcode不相等則兩個對象的內容肯定不相等,這樣就不必一個一個去比較屬性的屬值了,從而提高對象比較的速度。