Originariamente inviato da Le0n
ultima domanda in merito:
ma i metodi equals e hashCode sono chiamati quando vado a fare la containsKey?
cioè containsKey chiama equals che usa hashCode?
containsKey() fa una cosa di questo tipo: calcola il hash code della chiave passata in input (quindi chiama hashCode() sul reference passato come argomento), tramite questo hash code determina quale è il "bucket" da utilizzare, quindi scansiona la lista di entry che fanno capo a quel bucket e di ogni entry prende la chiave e la compara con equals() alla chiave passata in input fino a quando trova la stessa chiave.

Questo ovviamente a grandi linee ... se vuoi i dettagli, leggi il sorgente della classe HashMap ad esempio.