Originariamente inviato da Donovant
ma siccome k1 String1 e k2 String hanno 2 hashcode diversi

Non riesco a capire il fatto che tu dici che chiavi diverse con stessa STRINGA abbiano hashcode uguali
No ... non ci siamo.

In una Map basata su una "tabella hash" (precisazione importante ... non l'ho fatta prima) è fondamentale che gli oggetti delle chiavi rispettino il contratto tra equals() e hashCode(). Fin qui probabilmente l'hai capito.

Se questo contratto viene rispettato, non è possibile che in una Map ci siano 2 chiavi uguali. È possibile che due chiavi diverse abbiano lo stesso hashcode. Questo sì. Ma non è un problema. Perché comunque la Map per cercare una chiave prima usa hashCode() per individuare il "bucket" e poi scansiona la lista linkata sotto il bucket usando equals() su tutte le chiavi nella lista finché non trova la chiave uguale a quella cercata.

Se due chiavi diverse hanno lo stesso hashcode ... beh, andranno a finire sotto il medesimo bucket. Ma tanto sono diverse, motivo per cui appunto possono coesistere.

Ti è più chiaro adesso?