«Мышление на Java» 4 -е издание P519 Page Sleashhashmap Глава примечания.
SleedHashmap используется для сохранения ShideReference, структура под названием Yunxun Collector Collector автоматически очищает клавиши и значения.
При добавлении клавиш и значений отображение автоматически обертывает их слабыми.
См. Исходный код JDK,
public v put (k key, v value) {object k = masknull (key); int h = hash (k); intry <k, v> [] tab = getTable (); int i = indexfor (h, tab.length); для (intry <k, v> e = tab [i]; e! OldValue = e.value; if (value! = OldValue) e.value = value; return oldValue;}} modCount ++; intry <K, v> e = tab [i]; tab [i] = новая запись <> (k, значение, очередь, h, e); if (++ size> = threshold). new Entry<>(k, value, queue, h, e) использует ReferenceQueue
/ ** * Справочная очередь для очистки Shideentries */ private final Queerqueue <object> queue = new Referencequeue <> ();
Нажмите на конструктор new Entry , введите верхний уровень Super, чтобы увидеть.
/** * Создает новую слабую ссылку, которая относится к данному объекту и * зарегистрирован в данной очереди. * * @param Справочный объект Новая слабая ссылка будет относиться к * @param Q в очередь, с которой должна быть зарегистрирована ссылка, * или <tt> null </ tt>, если регистрация не требуется */ public shideReference (t referment, referencequeue <? Super t> q) {super (референция, q); } Здесь new Entry также строит объект слабых
тест:
пакет com.anialy.test.data_structure.map; import java.util.iterator; import java.util.weakhashmap; public class sleedhashmaptest {public static void main (string [] args) {sleadhashmap wmap = new Sleedhashmap <String> (); final int size = string [] string [] string [] string [] string [] string [] string [] string [] string [] string [] string [] string [] string [] string [] string []; i = 0; wmap.keyset (). iterator (); while (iter.hasnext ()) {system.out.println (wmap.get (iter.next ()));}}}Можно ожидать, что частично, поскольку String [] сохраняет слабые ссылки, выходы являются интервалом 3.
Выше приведено все содержание этой статьи об анализе экземпляра Sleedhashmap программирования Java, я надеюсь, что это будет полезно для всех. Заинтересованные друзья могут продолжать ссылаться на другие связанные темы на этом сайте. Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это. Спасибо, друзья, за вашу поддержку на этом сайте!