2009-06-22 46 views
9

在集合弱引用的對象有幾個關於Java的WeakReference的問題,並類別:發現在Java

  1. 是否有一個圖書館,在那裏,實現了Java的各種數據集接口(如集合,列表,設置,隊列等)與WeakReference透明地?像WeakHashMap是用於HashMap接口的?

  2. 或者是通常的解決方案,只需創建普通的集合,然後使用compareTo或比較器或類似的技巧來使搜索集合正常工作?

我基本上會是這樣的:

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

但對於接口的合同是到E引用是弱存儲。顯然我沒有get(int index)當這個對象已經消失等返回null的問題,但我想contains(E e)功能和其他項目,像它能正常工作。

我只是想避免「這裏沒有發明」的陷阱,並確保如果我自己實現這個最簡單的解決方案。

+0

谷歌集合也許?他們的地圖構建器是相當不錯的我聽到 – akarnokd 2009-06-22 13:58:56

+0

一個巧妙的技巧(只適用於某個時間)是在指涉對象本身中包含一個規範的WeakReference - 只需要爲每個目標創建一個引用並等於/ ==工作。 – 2009-06-22 20:47:19

回答

6

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

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

而且我發現了一個WeakArrayList這是LGPL是否有幫助。