为什么存在 WeakHashMap,但没有 WeakSet?Collections.newSetFromMap
2022-08-31 12:21:25
来自 J. 布洛赫
一个。。。内存泄漏的来源是侦听器...确保及时垃圾回收回调的最佳方法是仅存储对它们的弱引用,例如,仅将它们作为键存储在 WeakHashMap 中。
那么,为什么Java Collections框架中没有任何WeakSet呢?
来自 J. 布洛赫
一个。。。内存泄漏的来源是侦听器...确保及时垃圾回收回调的最佳方法是仅存储对它们的弱引用,例如,仅将它们作为键存储在 WeakHashMap 中。
那么,为什么Java Collections框架中没有任何WeakSet呢?
Collections.newSetFromMap
Set<Object> weakHashSet =
Collections.newSetFromMap(
new WeakHashMap<Object, Boolean>()
);
如 Collections.newSetFromMap
文档中所示,传递 WeakHashMap
以获取 Set
。
虽然你确实可以使用 Collections.newSetFromMap()
来获得一个 WeakSet,但它的用例实际上非常有限。
如果你想实现类似的东西,你可能想看看Guava的Interners.newWeakInterner()
功能。String.intern()