Il programmatore che scrive una classe specifica (es. Persona) i cui oggetti saranno contenuti in un set (o se sono chiavi nelle map), deve solo assicurarsi di aver scritto la classe in modo "ragionevolmente" corretto, in particolare riguardo equals, hashCode e compareTo/compare (per Comparable/Comparator) a seconda di quale strategia usa la collezione per cercare e confrontare gli elementi.
Tutto qui.