-
小朋友,是否有很多問號???
-
零、讀這裏這裏之前,我一定要說的一個觀點。重寫equals()方法一定要重寫hashCode()方法嗎?
-
-
我的回答是不一定,也是比較片面的,當我們需求只用到了equals方法去判斷對象是否相同的時候,則就沒必要考慮hashCode()是否一致;
-
因此這裏的一定?或者不一定?完全看需求,但是整體上爲了代碼專業度、健壯性、balabal來說建議重寫;
-
與此同時Java的源碼中有相應的結論,要hashCode與equals保持一致的判斷標準,A.equals(B) -> B.hashCode() == A.hashCode();
-
Note that it is generally necessary to override the {@code hashCode}
* method whenever this method is overridden, so as to maintain the
* general contract for the {@code hashCode} method, which states
* that equal objects must have equal hash codes.
-
一、什麼是hashCode和equals
-
hashCode()和equals()都是Object類的屬性和方法;
-
hashCode()是對於每一個對象生成一個唯一的hashCode,可能會重複;
-
equals()是判斷兩個對象是否相同;
-
下面對比的時候equals()的第八條,Java源碼中也是建議,修改Equals方法的時候,要修改hashCode,保證equals相等的時候,ha