If two objects are equal in terms of the equals() method, then they should produce the same hashCode(). If they are not equal in terms of equals() then they might or might not return the same hashCode() - if the hashCode() is well written then the chance of non-equal objects ...