Riprto qui quello che stavo scrivendo in un altro thread, in cui questo era un po' OT.
"adbin":
"adbin":tra equals() e hashCode() esiste un "contratto" ben preciso (la documentazione di Object lo spiega, anche se solo a parole). E se si fa l'override di equals() allora va fatto anche l'override di hashCode() in modo coerente con il contratto.
"adbin":Una tabella hash generalmente è implementata come una lista di bucket, tutti gli oggetti con lo stesso hash code vanno a finire nello stesso bucket. In ogni bucket c'è una lista di entry (chiave+valore) che deve essere scandita per trovare la chiave.
Citato ivi scritto, mi piacerebbe sapere come fare l'override di equals() e hashCode(), se (come nell'altro topic) utilizzo una Hashtable<Integer, String> ht ???Molto semplice:
Se due oggetti sono uguali secondo equals() allora i loro hash code devono essere uguali. Questa è la regola fondamentale e più importante...
equals(); lascio quella di String, quindi va bene ht.get(k1).equals(ht.get(k2) )
ma per hashCode(); ???....cioè non capisco come fare a far si che se k1 e k2 siano 2 stringhe uguali, questo "contratto" possa andare anche per hashCode...