设置WeakHashMap的等价物?

Bar*_*man 17 java collections weak-references hashset weakhashmap

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

如果没有,那相当于什么?

Njo*_*jol 21

不,如果WeakReference集合中某个s 引用的对象被垃圾收集,WeakReference则仍然会包含在集合中,并且不会自动删除,但它们referent将会被删除null.A WeakHashMap使用其他代码在垃圾收集时从地图中删除弱引用的键.

相当于a的集合WeakHashMap是:

Set<T> set = Collections.newSetFromMap(new WeakHashMap<T, Boolean>()); 
Run Code Online (Sandbox Code Playgroud)

作为一个HashSet也在HashMap内部使用.

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