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

Pet*_*org 9 java collections weak-references

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

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

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

我基本上想这样:

public interface WeakCollection<E> extends Collection<E> {}
Run Code Online (Sandbox Code Playgroud)

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

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

Mr.*_* 安宇 6

JBoss有一个WeakSet.在Java 6中,您也可以这样做

Set<T> s = Collections.newSetFromMap(new WeakHashMap<T, Boolean>());
Run Code Online (Sandbox Code Playgroud)

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