WeakHashMap Класс

Определение

Реализация Map интерфейса на основе хэш-таблицы с <ненадежными ключами или>em<>.

[Android.Runtime.Register("java/util/WeakHashMap", DoNotGenerateAcw=true)]
[Java.Interop.JavaTypeParameters(new System.String[] { "K", "V" })]
public class WeakHashMap : Java.Util.AbstractMap, IDisposable, Java.Interop.IJavaPeerable
[<Android.Runtime.Register("java/util/WeakHashMap", DoNotGenerateAcw=true)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "K", "V" })>]
type WeakHashMap = class
    inherit AbstractMap
    interface IMap
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
Наследование
WeakHashMap
Атрибуты
Реализации

Комментарии

Реализация Map интерфейса на основе хэш-таблицы с <ненадежными ключами или>em<>. Запись в будет автоматически удалена WeakHashMap , если ее ключ больше не используется в обычном использовании. Точнее, наличие сопоставления для заданного ключа не помешает отбрасывать ключ сборщиком мусора, т. е. сделать его окончательным, окончательным, а затем восстановленным. При удалении ключа его запись фактически удаляется из карты, поэтому этот класс ведет себя несколько иначе, чем в других Map реализациях.

Поддерживаются значения NULL и ключ NULL. Этот класс имеет характеристики производительности, аналогичные характеристикам HashMap класса , и имеет те же параметры эффективности для>исходной <емкости< em/em> и <коэффициента< нагрузки em>/em>.

Как и большинство классов коллекций, этот класс не синхронизируется. Синхронизированный WeakHashMap объект можно создать с помощью Collections#synchronizedMap Collections.synchronizedMap метода .

Этот класс предназначен в основном для использования с ключевыми объектами, методы которых equals проверяют идентификацию == объектов с помощью оператора . После того как такой ключ будет удален, его нельзя воссоздать, поэтому невозможно выполнить поиск этого ключа в WeakHashMap позже и быть удивлен тем, что его запись была удалена. Этот класс будет отлично работать с ключевыми объектами, методы которых equals не основаны на идентификаторе объекта, например String с экземплярами. Однако при использовании таких возвращаемых объектов ключей автоматическое удаление WeakHashMap записей, ключи которых были удалены, может оказаться запутанным.

Поведение WeakHashMap класса частично зависит от действий сборщика мусора, поэтому несколько знакомых (хотя и не обязательных) Map инвариантов не содержат для этого класса. Так как сборщик мусора может в любой WeakHashMap момент отбрасывать ключи, объект может вести себя так, как будто неизвестный поток автоматически удаляет записи. В частности, даже если вы синхронизируете WeakHashMap на экземпляре и не вызываете ни один из методов мутатора, метод может size возвращать меньшие значения с течением времени, чтобы isEmpty метод возвращал false , а затем true, чтобы containsKey метод возвращал true и более поздние false версии для заданного ключа, чтобы get метод возвращал значение для заданного ключа, но позже возвращал null. put для метода для возврата null и remove метода , возвращаемого false для ключа, который ранее отображался в сопоставлении, и для последовательных исследований набора ключей, коллекция значений и набор записей, чтобы получить последовательно меньшее количество элементов.

Каждый ключевой WeakHashMap объект в хранится косвенно как референт слабой ссылки. Поэтому ключ будет автоматически удален только после того, как сборщик мусора очистит слабые ссылки на него как внутри, так и за ее пределами.

<примечания к реализации strong>:/strong> Объекты значений WeakHashMap в содержатся обычными строгими< ссылками. Поэтому следует соблюдать осторожность, чтобы объекты значений не ссылались на свои собственные ключи напрямую или косвенно, так как это предотвратит удаление ключей. Обратите внимание, что объект значения может косвенно ссылаться на свой ключ через WeakHashMap сам, то есть объект значения может строго ссылаться на какой-то другой объект ключа, связанный объект значения, в свою очередь, строго ссылается на ключ первого объекта значения. Если значения на карте не зависят от наличия на карте строгих ссылок на них, одним из способов решения этой проблемы является перенос самих значений в перед WeakReferences вставкой, как в : m.put(key, new WeakReference(value)), а затем распакуйте по каждому get.

Итераторы, возвращаемые методом iterator коллекций, возвращаемых всеми "методами представления коллекции" этого класса, выполняются быстро: при структурном изменении карты в любое время после создания итератора любым способом, кроме собственного метода итератора remove , итератор вызовет ConcurrentModificationExceptionисключение . Таким образом, при одновременном изменении итератор завершает работу быстро и чисто, вместо того, чтобы рисковать произвольным, недетерминированным поведением в неопределенное время в будущем.

Обратите внимание, что быстрое поведение итератора не может быть гарантировано, так как в целом невозможно сделать какие-либо жесткие гарантии при наличии несинхронизированного параллельного изменения. Быстрые итераторы создаются ConcurrentModificationException на основе наилучших усилий. Поэтому было бы неправильно писать программу, которая зависит от этого исключения из-за его правильности: быстрое поведение итераторов должно использоваться только для обнаружения ошибок.

Этот класс является членом Платформы коллекций Java.

Добавлено в версии 1.2.

Документация по Java для java.util.WeakHashMap.

Части этой страницы являются изменениями, основанными на работе, созданной и совместно используемой проектом и используемой в соответствии с условиями, Creative Commons 2.5 Attribution License Creative Commons 2.5 Attribution License.

Конструкторы

WeakHashMap()

Создает новый пустой WeakHashMap объект с начальной емкостью по умолчанию (16) и коэффициентом нагрузки (0).

WeakHashMap(IDictionary)

Создает новый WeakHashMap объект с теми же сопоставлениями, что и указанная карта.

WeakHashMap(Int32)

Создает новый пустой WeakHashMap объект с заданной начальной емкостью и коэффициентом нагрузки по умолчанию (0.

WeakHashMap(Int32, Single)

Создает новый пустой WeakHashMap объект с заданной начальной емкостью и заданным коэффициентом нагрузки.

WeakHashMap(IntPtr, JniHandleOwnership)

Конструктор, используемый при создании управляемых представлений объектов JNI; вызывается средой выполнения.

Свойства

Class

Возвращает класс среды выполнения данного объекта Object.

(Унаследовано от Object)
Handle

Дескриптор базового экземпляра Android.

(Унаследовано от Object)
IsEmpty

Добавление

(Унаследовано от AbstractMap)
JniIdentityHashCode

Реализация Map интерфейса на основе хэш-таблицы с <ненадежными ключами или>em<>.

(Унаследовано от Object)
JniPeerMembers

Реализация Map интерфейса на основе хэш-таблицы с <ненадежными ключами или>em<>.

PeerReference

Реализация Map интерфейса на основе хэш-таблицы с <ненадежными ключами или>em<>.

(Унаследовано от Object)
ThresholdClass

Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода.

ThresholdType

Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода.

Методы

Clear()

Добавление

(Унаследовано от AbstractMap)
Clone()

Создает и возвращает копию этого объекта.

(Унаследовано от Object)
ContainsKey(Object)

Добавление

(Унаследовано от AbstractMap)
ContainsValue(Object)

Добавление

(Унаследовано от AbstractMap)
Dispose()

Реализация Map интерфейса на основе хэш-таблицы с <ненадежными ключами или>em<>.

(Унаследовано от Object)
Dispose(Boolean)

Реализация Map интерфейса на основе хэш-таблицы с <ненадежными ключами или>em<>.

(Унаследовано от Object)
EntrySet()

Set Возвращает представление сопоставлений, содержащихся в этой карте.

Equals(Object)

Указывает, равен ли какой-то другой объект этому объекту.

(Унаследовано от Object)
ForEach(IBiConsumer)

Реализация Map интерфейса на основе хэш-таблицы с <ненадежными ключами или>em<>.

Get(Object)

Добавление

(Унаследовано от AbstractMap)
GetHashCode()

Возвращает значение хэш-кода для объекта.

(Унаследовано от Object)
JavaFinalize()

Вызывается сборщиком мусора для объекта , когда сборка мусора определяет, что больше нет ссылок на объект .

(Унаследовано от Object)
KeySet()

Добавление

(Унаследовано от AbstractMap)
Notify()

Пробуждение одного потока, ожидающего на мониторе этого объекта.

(Унаследовано от Object)
NotifyAll()

Активирует все потоки, ожидающие на мониторе этого объекта.

(Унаследовано от Object)
Put(Object, Object)

Добавление

(Унаследовано от AbstractMap)
PutAll(IDictionary)

Добавление

(Унаследовано от AbstractMap)
Remove(Object)

Добавление

(Унаследовано от AbstractMap)
ReplaceAll(IBiFunction)

Реализация Map интерфейса на основе хэш-таблицы с <ненадежными ключами или>em<>.

SetHandle(IntPtr, JniHandleOwnership)

Задает свойство Handle.

(Унаследовано от Object)
Size()

Добавление

(Унаследовано от AbstractMap)
ToArray<T>()

Реализация Map интерфейса на основе хэш-таблицы с <ненадежными ключами или>em<>.

(Унаследовано от Object)
ToString()

Возвращает строковое представление объекта.

(Унаследовано от Object)
UnregisterFromRuntime()

Реализация Map интерфейса на основе хэш-таблицы с <ненадежными ключами или>em<>.

(Унаследовано от Object)
Values()

Добавление

(Унаследовано от AbstractMap)
Wait()

Заставляет текущий поток ждать, пока он не будет пробужден, как правило, из-за <уведомления/><em> или <прерывания></em>.

(Унаследовано от Object)
Wait(Int64)

Заставляет текущий поток ждать, пока он не будет пробужден, как правило, из-за <уведомления</>em>, <>прерывания< или> em, либо до истечения определенного количества реального времени.

(Унаследовано от Object)
Wait(Int64, Int32)

Заставляет текущий поток ждать, пока он не будет пробужден, как правило, из-за <уведомления</>em>, <>прерывания< или> em, либо до истечения определенного количества реального времени.

(Унаследовано от Object)

Явные реализации интерфейса

IJavaPeerable.Disposed()

Реализация Map интерфейса на основе хэш-таблицы с <ненадежными ключами или>em<>.

(Унаследовано от Object)
IJavaPeerable.DisposeUnlessReferenced()

Реализация Map интерфейса на основе хэш-таблицы с <ненадежными ключами или>em<>.

(Унаследовано от Object)
IJavaPeerable.Finalized()

Реализация Map интерфейса на основе хэш-таблицы с <ненадежными ключами или>em<>.

(Унаследовано от Object)
IJavaPeerable.JniManagedPeerState

Реализация Map интерфейса на основе хэш-таблицы с <ненадежными ключами или>em<>.

(Унаследовано от Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Реализация Map интерфейса на основе хэш-таблицы с <ненадежными ключами или>em<>.

(Унаследовано от Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Реализация Map интерфейса на основе хэш-таблицы с <ненадежными ключами или>em<>.

(Унаследовано от Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

Реализация Map интерфейса на основе хэш-таблицы с <ненадежными ключами или>em<>.

(Унаследовано от Object)

Методы расширения

JavaCast<TResult>(IJavaObject)

Выполняет преобразование типа, проверенное средой выполнения Android.

JavaCast<TResult>(IJavaObject)

Реализация Map интерфейса на основе хэш-таблицы с <ненадежными ключами или>em<>.

GetJniTypeName(IJavaPeerable)

Реализация Map интерфейса на основе хэш-таблицы с <ненадежными ключами или>em<>.

Применяется к