Quote Originariamente inviata da andbin Visualizza il messaggio
HashSet si basa sull'utilizzo del contratto tra equals/hashCode degli oggetti. Nel tuo Cliente non hai fatto un override di equals (il parametro deve essere Object!) ... ma un overload, che HashSet non sarebbe in grado di usare.
E nota: HashSet quindi non si basa su Comparable/Comparator.

Se ridefinisci correttamente equals(), devi ridefinire correttamente anche hashCode() per rispettare il contratto tra i due metodi. Se violi il contratto .... succedono altre "brutte" cose nel HashSet.


P.S. Comparator non si implementa di norma nella classe degli oggetti da comparare! Ha generalmente poco senso. I Comparator (se ne possono avere N) si implementano in classi distinte dalla classe dei tuoi oggetti.

Grazie tante ho risolto