在java中的集合中查找弱引用对象

时间:2009-06-22 13:55:30

标签: java collections weak-references

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

  1. 是否有一个库透明地使用WeakReference实现Java的各种数据集接口(例如Collection,List,Set,Queue等)?就像WeakHashMap用于HashMap接口一样?

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

  3. 我基本上想这样:

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

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

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

1 个答案:

答案 0 :(得分:6)

JBoss有一个WeakSet。在Java 6中,you can also do

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

如果有帮助的话,我发现了WeakArrayList这是LGPL。