【问题标题】:Set equivalent of WeakHashMap?设置等效于 WeakHashMap?
【发布时间】:2013-10-14 19:02:09
【问题描述】:

HashSet<WeakReference<T>>Set 等价于 WeakHashMap<T> 吗?也就是说,条目不再被引用时会被自动删除吗?

如果不是,什么是等价物?

【问题讨论】:

标签: java collections hashset weak-references weakhashmap


【解决方案1】:

不,如果集合中的 WeakReferences 之一引用的对象被垃圾收集,WeakReference 仍将包含在集合中并且不会自动删除,但它们的 referent 将被nullWeakHashMap 在垃圾回收时使用附加代码从映射中删除弱引用键。

WeakHashMap 等效的集合是:

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

作为HashSet 在内部也使用HashMap

顺便说一句:WeakReference 只是一个指向一个对象的对象,尽管WeakReference 持有该引用,但该对象可能会被垃圾回收。 WeakReference 本身不会被垃圾收集,直到它不再像所有其他对象一样在任何地方被强引用。

【讨论】:

  • 这就是我一直在寻找的答案。谢谢!
猜你喜欢
  • 2021-11-17
  • 1970-01-01
  • 2021-12-19
  • 2021-11-02
  • 2011-09-07
  • 2012-03-25
  • 1970-01-01
  • 1970-01-01
  • 2011-01-16
相关资源
最近更新 更多