关于Java的WeakReference和Collections的几个问题:
是否有一个库透明地使用WeakReference实现Java的各种数据集接口(例如Collection,List,Set,Queue等)?就像WeakHashMap用于HashMap接口一样?
或者是简单地创建普通集合然后使用compareTo或Comparator或某些东西来使搜索集合正常工作的常见解决方案?
我基本上想这样:
public interface WeakCollection<E> extends Collection<E> {}
但是接口的合同是对E的引用是弱存储的。显然,当get(int index)
在该对象消失等时返回null时我没有问题,但我希望contains(E e)
函数和其他类似的项能够正常工作。
我只是想避免“没有发明在这里”的陷阱,并确保如果我自己实现这个最简单的解决方案。
答案 0 :(得分:6)
JBoss有一个WeakSet。在Java 6中,you can also do
Set<T> s = Collections.newSetFromMap(new WeakHashMap<T, Boolean>());
如果有帮助的话,我发现了WeakArrayList这是LGPL。