SsaLaroLana ha scritto:
a cosa serve di preciso il metodo HashCode ?
L'uso direi principale (è stato fatto per quello) è nelle collezioni che internamente sono basate su una "hash-table". Il valore fornito da hashCode() serve alla collezione inizialmente per trovare il "bucket" all'interno della hash-table in cui inserire/trovare un elemento. Nel bucket ci possono essere più valori, tipicamente in una lista linkata, che deve essere scansionata e se si cerca un elemento il confronto è fatto con equals().
Tra equals() e hashCode() esiste un "contratto" ben preciso. Se si ridefinisce uno, si
deve ridefinire anche l'altro. Implementazioni inappropriate che "rompono" il contratto portano a problemi che possono essere: la presenza di "duplicati" nelle collezioni (anche quelle come i Set dove, per concetto, non ci dovrebbero essere duplicati) e/o l'impossibilità di trovare oggetti.