Guava mapMaker (). DeboliKeys (). Makemap () vs debolohashmap
-
25-09-2019 - |
Domanda
Abbiamo un server Scala che sta ottenendo un albero di nodi utilizzando buffer di protocolli su una presa e dobbiamo collegare ulteriori dati a ciascun nodo.
In un singolo contesto filettato e quando sia l'albero dei nodi che i dati associati avranno i loro forti riferimenti rimossi contemporaneamente (a causa dell'ambito di applicazione), esiste un motivo per utilizzare il mapmaker di Google Guava con Dideorsone () oltre l'uso di DeiperHashMap ? Sembra che con Mapmaker, si paga per l'accesso sincronizzato, che non è necessario in questo caso.
A parte questo, sarebbe utile se Mapmaker dovesse dare accesso alle impostazioni di equivalenza in modo da poter scegliere l'uguaglianza di riferimento ma non si preoccupano dei riferimenti deboli o morbidi.
Soluzione
Un aspetto negativo significativo a WeakHashMap
è che non è una "mappa dell'identità". Cioè, usa equals()
e hashCode
(piuttosto che ==
e identityHashCode
) Sulle chiavi, che in realtà non ha senso per le chiavi deboli. Puoi aggirare questo bug assicurandosi che le tue chiavi utilizzino l'uguaglianza di identità nel loro equals
metodo.