设置WeakHashMap的等价物?

时间:2013-10-14 19:02:09

标签: java collections hashset weak-references weakhashmap

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

如果没有,等同于什么?

1 个答案:

答案 0 :(得分:19)

不,如果集合中WeakReference之一引用的对象被垃圾收集,WeakReference仍将包含在集合中,并且不会自动删除,但是referent { {1}}将nullWeakHashMap使用其他代码在垃圾回收时从地图中删除弱引用的密钥。

等效于WeakHashMap的集合是:

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

由于HashSet内部也使用HashMap

BTW:WeakReference只是指向一个对象的对象,尽管WeakReference持有引用,但该对象可能被垃圾收集。 WeakReference本身不会被垃圾收集,直到它不再被强烈引用,就像所有其他对象一样。