9

关于 Java 的 WeakReference 和 Collections 的几个问题:

  1. 是否有一个库可以通过 WeakReference 透明地实现 Java 的各种数据集接口(例如 Collection、List、Set、Queue 等)?像 WeakHashMap 是针对 HashMap 接口的吗?

  2. 或者是简单地创建普通集合然后使用某种技巧与 compareTo 或 Comparator 或其他东西来使搜索集合正常工作的常见解决方案?

我基本上是这样的:

public interface WeakCollection<E> extends Collection<E> {}

但是接口的约定是对 E 的引用是弱存储的。get(int index)显然,当该对象消失等时返回 null没有问题,但我希望该contains(E e)函数和其他类似的项目能够正常工作。

我只是想避免“不是在这里发明”的陷阱,并确保如果我自己实现它,它可能是最简单的解决方案。

4

1 回答 1

6

JBoss 有一个WeakSet。在 Java 6 中,您还可以

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

如果有帮助,我还发现了一个LGPL 的WeakArrayList

于 2009-06-22T14:10:34.217 回答