java - 设置等效于 WeakHashMap?

标签 java collections hashset weak-references weakhashmap

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

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

最佳答案

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

WeakHashMap 的等价集合是:

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

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

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

关于java - 设置等效于 WeakHashMap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19367338/

相关文章:

c# - 如何在字典之间移动对象?

java - 识别客户列表中重复的客户 ID

java - HashSets 中的 contains-Method 如何工作?

java - 使用 Spring Boot 进行服务器端渲染 React

java - 如何为 setAsciiStream 方法提供正确的参数?

java - Spring boot ClientHttpRequestInterceptor 在 401 上重新发送

Java - java.lang.StringIndexOutOfBoundsException : String index out of range: 11

仅针对添加(插入)操作优化的 Java 集合

java.util.Map 和 google 缓存实现(com.google.common.cache.Cache)的区别

java - 在 HashSet 中搜索字符串数组中的任意元素