There are a couple of third-party collections frameworks that allows custom equality logic. This is perfect for overriding equality for objects that you can't alter the source.
Trove's maps/sets support the use of custom hashing strategies,
allowing you to tune collections based on characteristics of the input
data. This feature also allows you to define hash functions when it is
not feasible to override Object.hashCode().
To achive this, any type that needs a standard correction, must
implement the HE-Collection interface EqualsAndHashCorrection. This
interface defines the methods hashCodeInHeCollection() and
equalsInHeCollection(Object), that serve as correction for the
incorrect implemented methods hashCode() and equals(Object).