2009-06-22 9 views
9

Ein paar Fragen zu Java WeakReference und Kollektionen:findet schwache Referenzobjekte in einer Sammlung in java

  1. Gibt es eine Bibliothek gibt, die verschiedene Daten-Set-Schnittstellen (zB Sammlung, List, Set von Java implementiert, Warteschlange usw.) mit WeakReference transparent? Wie ist WeakHashMap für die HashMap-Schnittstelle?

  2. Oder ist die allgemeine Lösung, um einfach normale Sammlungen zu erstellen und dann eine Art Trick mit compareTo oder einem Komparator oder etwas zu verwenden, um das Durchsuchen der Sammlung richtig zu machen?

Ich würde dies im Grunde mag:

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

Aber der Vertrag für die Schnittstelle ist, dass die Verweise auf E schwach gespeichert sind. Offensichtlich habe ich kein Problem mit get(int index) Null zurückgeben, wenn das Objekt weggegangen ist usw., aber ich möchte die contains(E e) Funktion und andere Artikel wie es richtig funktioniert.

Ich versuche nur, die "nicht erfunden hier" -Falle zu vermeiden und dafür zu sorgen, dass wenn ich das selbst implementiere, dass es die einfachste mögliche Lösung ist.

+0

Google Sammlungen vielleicht? Ihr Mapbuilder ist ziemlich gut, ich höre – akarnokd

+0

Ein ordentlicher Trick (nur manchmal anwendbar) ist, eine kanonische WeakReference in das Referentenobjekt selbst aufzunehmen - muss nur eine Referenz pro Ziel erstellen und ist gleich/== Arbeit. –

Antwort

6

JBoss hat eine WeakSet. In Java 6, you can also do

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

Auch fand ich eine WeakArrayList die LGPL ist, ob das hilft.

+1

Oh schön, dass Trick mit Sammlungen ist cool, auf jeden Fall nützlich. – Petriborg

Verwandte Themen