相当于? _ HashSet<WeakReference<T>>
_ 也就是说,条目不再被引用时会被自动删除吗?Set
WeakHashMap<T>
如果不是,什么是等价物?
相当于? _ HashSet<WeakReference<T>>
_ 也就是说,条目不再被引用时会被自动删除吗?Set
WeakHashMap<T>
如果不是,什么是等价物?
No, if an object referenced by one of the WeakReference
s in the set gets garbage-collected, the WeakReference
will still be included in the set and will not be removed automatically, but their referent
will be null
. A WeakHashMap
uses additional code to remove the weakly referenced keys from the map when they're garbage-collected.
A set equivalent of a WeakHashMap
is:
Set<T> set = Collections.newSetFromMap(new WeakHashMap<T, Boolean>());
As a HashSet
also uses a HashMap
internally.
BTW: A WeakReference
is just an object pointing to an object which may be garbage-collected despite the reference held by the WeakReference
. The WeakReference
itself will not be garbage-collected until it is not strongly referenced anywhere anymore just like all other objects.