поиск слабых ссылочных объектов в коллекциях в Java - PullRequest
9 голосов
/ 22 июня 2009

Пара вопросов, касающихся слабых ссылок и коллекций Java:

  1. Существует ли библиотека, которая реализует различные интерфейсы Java-наборов данных (например, Collection, List, Set, Queue и т. Д.) С прозрачностью WeakReference? Как WeakHashMap для интерфейса HashMap?

  2. Или обычное решение - просто создать обычные коллекции и затем использовать какой-то прием с CompareTo или Comparator или что-то еще, чтобы поиск в коллекции работал правильно?

Мне, в принципе, хотелось бы этого:

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

Но контракт на интерфейс заключается в том, что ссылки на E хранятся слабо. Очевидно, у меня нет проблем с get(int index), возвращающим ноль, когда этот объект исчез, и т.д., но я бы хотел, чтобы функция contains(E e) и другие подобные ей элементы работали должным образом.

Я просто пытаюсь избежать ловушки "не изобретено здесь" и гарантирую, что, если я сам это реализую, это будет самое простое из возможных решений.

1 Ответ

6 голосов
/ 22 июня 2009

JBoss имеет Слабый набор . В Java 6 вы также можете сделать

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

Также я нашел WeakArrayList , это LGPL, если это поможет.

...