equals() overridden without hashCode(): a == b is true, but hashCode() differs ============================================================================== a.equals(b) = true a.hashCode() = 1390869998 b.hashCode() = 1820383114 (these should be IDENTICAL per the contract - they are not, because hashCode() was never overridden) HashSet after adding two equal-but-differently-hashed points: size=2 HashSet after adding two equal, correctly-hashed points: size=1