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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top