2010-11-16 10 views
7

Come in come weakhashmap capisce che un riferimento a una delle sue chiavi è ormai obsoleto, specialmente se la chiave è una stringa che è raggruppata?come funziona weakhashmap?

+3

Questo aiuterà http://stackoverflow.com/questions/154724/when-would-you-use-a-weakhashmap-or-a-weakreference –

risposta

3

Non deve usare letterali stringa con WeakHashMap (ben si può, ma non ci sarebbe alcun punto in esso):

String myKey = "somekey"; 

invece è necessario utilizzare:

String myKey = new String("somekey"); 

In quest'ultimo caso String non è in pool

+0

Questi esempi sono gli stessi. Un letterale stringa è una stringa. Ad un certo punto, dopo che una stringa non ha riferimenti (forti/normali) ad essa, sarà raccolta dei dati inutili. – Andy

+0

Non proprio la stessa cosa: http://stackoverflow.com/questions/10578984/what-is-string-interning –

1

Il termine "obsoleto" è impreciso. La condizione in questione è "raccolta rifiuti". Un valore viene rimosso da WeakHashMap quando e se la chiave è raccolta dalla garbage collection. Periodo.