首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么有WeakHashMap,却没有WeakSet?

为什么有WeakHashMap,却没有WeakSet?
EN

Stack Overflow用户
提问于 2010-10-31 19:35:06
回答 2查看 23.7K关注 0票数 82

来自J. Bloch

A ...内存泄漏的来源是监听器...确保回调被及时垃圾回收的最好方法是只存储对它们的弱引用,例如,将它们仅作为键存储在WeakHashMap中。

那么,为什么Java Collections framework中没有任何WeakSet呢?

EN

回答 2

Stack Overflow用户

发布于 2010-10-31 19:47:54

Collections.newSetFromMap

代码语言:javascript
复制
Set<Object> weakHashSet = 
    Collections.newSetFromMap(
        new WeakHashMap<Object, Boolean>()
    );

正如在Collections.newSetFromMap文档中看到的,传递一个WeakHashMap来获取一个Set

票数 200
EN

Stack Overflow用户

发布于 2018-03-02 22:00:05

虽然您确实可以使用Collections.newSetFromMap()来获取WeakSet,但它的用例实际上相当有限。

如果您想实现类似于String.intern()的东西,那么您可能想看看Guava的Interners.newWeakInterner()功能。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4062919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档