參考Java文檔,hashCode的一般合同(從Java文檔複製):
- Whenever it is invoked on the same object more than once during an
execution of a Java application, the hashCode method must
consistently return the same integer, provided no information used in
equals comparisons on the object is modified. This integer need not
remain consistent from one execution of an application to another
execution of the same application.
- If two objects are equal according to the equals(Object) method, then
calling the hashCode method on each of the two objects must produce
the same integer result.
- It is not required that if two objects are unequal according to the
equals(java.lang.Object) method, then calling the hashCode method on
each of the two objects must produce distinct integer results.
However, the programmer should be aware that producing distinct
integer results for unequal objects may improve the performance of
hashtables.
所以從您的實現平等的,數據和替代切換使用。因此,如果切換data.hashCode()和alternative.hashCode()的位置,則需要確保在您的hashCode實現中返回相同的值。如果您不確定,只需返回一個常量值,例如1(但是,當您嘗試將對象放入地圖時,可能會導致性能問題)。