Главная » Java » weakHashMap

0

 

  Во всех реализациях коллекций для указания на объекты элементов, ключей и значений обычно используются прочные ссылки (strong references). Прочные ссылки — это, как правило, то, что необходимо в большинстве ситуаций. Впрочем, иногда возникает потребность в применении ссылок, обеспечивающих более слабую связь с объектами, — точно так же время от времени появляется надобность в использовании коллекций, которые ссылаются на хранимые ими объекты "менее прочным" образом. В подобных ситуациях целесообразно прибегнуть к помощи класса java.util .weakHaskMap.

  Объект класса WeakHaskMap ведет себя почти так же, как и объект HashMap, но между ними существует одно различие — WeakHaskMap ссылается на ключ посредством объекта WeakReference. Как мы писали в разделе 12.5.2, слабые ссылки (weak references) позволяют процессу сборки мусора утилизировать адресуемые ими объекты, поэтому объект можно поместить в коллекцию WeakHashMap, не подразумевая при этом, что тот обязан оставаться я памяти до того момента, пока не будет удален принудительно. Если ключ относится к категории слабо достижимых (weakly reachable) объектов, соответствие его объекту значения может быть удалено из коллекции даже в том случае, когда объект значения относится к числу прочно достижимых (strongly reachable).Если слабо достижим и объект значения, он также может быть утилизирован.

   Когда вызывается метод, способный изменить содержимое коллекции (put, remove или clear), объект WeakHashMap пытается отыскать ключи, ссылки на которые утрачены. Если необходимо спровоцировать "чистку" содержимого, можно вызвать один из названных методов таким способом, который не вызывает иных эффектов, — например, удалить ключ, не указывающий ни на одно из значений (скажем, равный null, если ключи null в коллекции не используются).

  Класс WeakHashMap поддерживает те же конструкторы, что и HashMap: конструктор без параметров; конструктор, позволяющий задать исходное значение количества ячеек хеш-таблицы; конструктор, принимающий в качестве параметров значения количества ячеек и коэффициента заполнения хеш-таблицы; и конструктор копии, создающий новый объект WeakHashMap, который содержит все элементы коллекции Map, переданной в виде параметра.

 

Источник: Арнолд, Кен, Гослинг, Джеймс, Холмс, Дэвид. Язык программирования Java. 3-е изд .. : Пер. с англ. – М. : Издательский дом «Вильяме», 2001. – 624 с. : ил. – Парал. тит. англ.

По теме:

  • Комментарии