设置 WeakHashMap 的等效项?

是否等效于 ?也就是说,当条目不再被引用时它们会自动删除吗?HashSet<WeakReference<T>>SetWeakHashMap<T>

如果不是,那么等效项是什么?


答案 1

不可以,如果集合中某个 s 引用的对象被垃圾回收,则 仍将包含在集合中,并且不会自动删除,但它们将是 .A 使用其他代码在垃圾回收时从映射中删除弱引用的键。WeakReferenceWeakReferencereferentnullWeakHashMap

的集合等效项是:WeakHashMap

Set<T> set = Collections.newSetFromMap(new WeakHashMap<T, Boolean>()); 

作为一个也使用内部。HashSetHashMap

顺便说一句:A 只是一个指向对象的对象,尽管 .在它不再像所有其他对象一样在任何地方被强烈引用之前,它不会被垃圾回收。WeakReferenceWeakReferenceWeakReference


答案 2