2010-11-16 7 views
7

W jaki sposób weakhashmap rozumie, że odniesienie do jednego z jego kluczy jest już nieaktualne, szczególnie jeśli klucz jest połączonym łańcuchem?jak działa weakhashmap?

+3

Pomoże to http://stackoverflow.com/questions/154724/when-would-you-use-a-weakhashmap-lub-aakreference –

Odpowiedz

3

Nie wolno używać napisowych z WeakHashMap (dobrze można jednak nie byłoby sensu w nim):

String myKey = "somekey"; 

zamiast należy użyć:

String myKey = new String("somekey"); 

W tym ostatnim przypadku String nie jest połączone.

+0

Te przykłady są takie same. Literał łańcuchowy jest ciągiem. Na pewnym etapie po jakimkolwiek łańcuchu nie ma żadnych (mocnych/normalnych) odniesień do niego, będzie to śmieci zebrane. – Andy

+0

Nie całkiem to samo: http://stackoverflow.com/questions/10578984/what-is-string-interning –

1

Słowo "przestarzały" jest nieprecyzyjne. Omawiany warunek to "zbierane śmieci". Wartość jest usuwana z WeakHashMap, gdy i klucz jest zbierany śmieci. Kropka.