Risposta breve: Probabilmente non funzionerà.
Risposta onesta: dipende tutto.
Risposta più lunga: il codice hash non è il problema, è la natura di confronti uguali su virgola mobile. Come sottolineano Nalandial e i commentatori del suo post, alla fine qualsiasi partita contro una tabella hash finisce per usare uguali per scegliere il giusto valore.
Quindi la domanda è: i tuoi duplicati vengono generati in modo tale che tu sappia che uguaglia significa davvero uguale a? Se leggi o calcoli un valore, memorizzalo nella tabella hash e successivamente leggi o calcola il valore usando esattamente lo stesso calcolo, quindi funzionerà Double.equals. Ma altrimenti è inaffidabile: 1.2 + 2.3 non è necessariamente uguale a 3.5, potrebbe essere uguale a 3.4999995 o altro. (Non è un esempio reale, l'ho appena inventato, ma questo è il genere di cose che succedono.) Puoi confrontare float e double in modo abbastanza affidabile per meno o più, ma non per gli uguali.
Come dice Jay e Carlos nelle loro risposte, si tratta di un problema di parità e non di codice hash. –