1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
Don't implement `#equals` using just a `hashCode` comparison:
```java
class MyClass {
private final int a;
private final int b;
private final String c;
...
@Override
public boolean equals(@Nullable Object o) {
return o.hashCode() == hashCode();
}
@Override
public int hashCode() {
return Objects.hashCode(a, b, c);
}
```
The number of `Object`s with randomly distributed `hashCode` required to give a
50% chance of collision (and therefore, with this pattern, erroneously correct
equality) is only ~77k.
|