参考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(但是,当您尝试将对象放入地图时,可能会导致性能问题)。