Originariamente inviato da Caiodark
Quando usi un array associativo, e hashtable lo è, la classe che fa da chiave deve implementare il metodo equals altrimenti java non è in grado di capire se due istanze rappresentano lo stesso valore.
Fatto questo, potrai recuperare il record in questo modo:

codice:
grigliaGioco.get(new Coordinate(0,0));
puntualizzo solo una cosa: usando le Collection e Map è bene per chiavi/valori implementare sempre i metodi equals e hashcode (e qui puoi leggere tanti documenti in rete sull'argomento e su come implementarli): è usare questi due metodi insieme che assicura l'unicità di un oggetto, non solo equals!
Non è obbligatorio implementare equals e hashcode con i valori di una Map, anche se io preferisco comunque metterci la mia implementazione per evitare casini quando da una hashmap faccio

codice:
mappa.values();
riguardo i generics...in realtà quell'operazione che hai scritto non crea problemi anche se la fai senza usare i generics. L'uso dei generics ti torna utile quando fai operazioni di insert perché il compilatore fa un controllo sul tipo che passi o di get perché il compilatore controlla il tipo a cui assegni il risultato della get (evitando in alcuni casi dei cast o odiosi instanceof), ma se per curiosità tu mettessi Object come tipo dei generics (e lo puoi fare), a parte eventuali warning, vedi che il codice esegue correttamente e ti segnala in alcuni punti (tipo get) la richiesta di un cast esplicito.

HashMap non è un contenitore generics, ma una implementazione di Map, sarebbe utile definire così:

codice:
Map<TitoChiave, TipoValore> mappa = new HashMap<TipoChiave, TipoValore>();
se non ricordo male da java 7 (devo provare perché uso pesantemente la versione 6) puoi anche fare questo


codice:
Map<TitoChiave, TipoValore> mappa = new HashMap();
e non perdi le info sui generics (la seconda è da verificare)