2009-06-22 12 views
9

yılında koleksiyonlarında zayıf referans nesneleri bulma:Java'nın WeakReference ilgili sorular ve Koleksiyonları Birkaç java

  1. (örn Koleksiyon, Listesi, Set Java'nın çeşitli veri-seti arabirimleri uygulayan orada bir kütüphane var, Kuyruk vb. WeakReference ile şeffaf bir şekilde mi? WeakHashMap HashMap arayüzü için mi?

  2. Veya normal koleksiyonları oluşturmak için basit bir çözümdür ve daha sonra CompareTo veya Karşılaştırıcı ile bir çeşit hile veya toplama işini doğru bir şekilde aramak için bir şey mi kullanıyorsunuz?

Temelde bu istiyorum:

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

Ama arayüz için sözleşme E'ye referanslar zayıf saklanır olmasıdır. Açıkçası ben bu nesne uzağa vb gittiğinde get(int index) null adlı dönen ile ilgili bir sorun yok, ama düzgün çalışması için gibi contains(E e) fonksiyonu ve diğer öğeleri istiyoruz.

Ben sadece "burada icat değil" tuzak kaçınmaya çalışan ve bunu yaparsam En basit çözüm mümkün olduğu bu kendim uygulamak sağlamak ediyorum.

+0

Google Koleksiyonları belki de? sadece hiç hedef başına bir referans oluşturmak gerekiyor ve/== işi eşittir - Onların Harita oluşturucu ben – akarnokd

+0

biri düzgün bir hile (sadece bazen geçerlidir) referent nesnenin kendisinde bir kanonik WeakReference dahil etmektir duymak oldukça iyi. –

cevap

6

JBoss bir WeakSet sahiptir. Java 6, içinde

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

you can also do Ayrıca ben eğer yardımcı olur LGPL'i olan bir WeakArrayList bulundu.

+1

Oh koleksiyonlarla bu hile güzel, kesinlikle yararlı. – Petriborg

İlgili konular