Originariamente inviato da vincyilbiondo
Quindi se ho capito: se uso la HashMap o la LinkedHashMap devo implementare questi due metodi nella classe della Chiave
Sì.

Originariamente inviato da vincyilbiondo
(ed eventualmente anche nella classe del Valore)
Per HashMap/LinkedHashMap no. Se ti serve implementarli anche per i valori per altri motivi ... ok.

Originariamente inviato da vincyilbiondo
se non implemento questi due metodi poiché non sà come confrontare le chiavi, mi compara i riferimenti delle chiavi.
Sì, restano equals/hashCode di Object che si basano solo sulla "identità" degli oggetti (in pratica sui reference).

Originariamente inviato da vincyilbiondo
Ho provato però lo stesso programma usando una TreeMap, senza implementare i metodi hashcode() e equals() e funziona bene. Forse perchè con la TreeMap si deve fornire un comparatore per effettuare l'inserimento in ordine, e quindi in questo modo vede anche se è presente già la stessa chiave?
TreeMap non è una "hash table". Ma è un albero binario. E l'ordinamento/ricerca delle chiavi si basa su Comparable o Comparator.