Язык

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
[<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
Наследование
Атрибуты
Реализации

Комментарии

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

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

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

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

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

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

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

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

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

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

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

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

Части этой страницы — это изменения на основе работы, созданной и общей Project и используемых в соответствии с условиями, описанными в разделе "".

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

Имя. Описание
WeakHashMap()

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

WeakHashMap(IDictionary)

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

WeakHashMap(Int32, Single)

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

WeakHashMap(Int32)

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

WeakHashMap(IntPtr, JniHandleOwnership)

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

Свойства

Имя. Описание
Class

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

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

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

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

Добавление

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

Возвращает хэш-код удостоверения, назначенный этому Java одноранговой среде выполнения взаимодействия.

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

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

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

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

PeerReference

Возвращает ссылку на объект JNI для этого Java однорангового узла.

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

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

ThresholdType

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

Методы

Имя. Описание
Clear()

Добавление

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

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

(Унаследовано от Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

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

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

Добавление

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

Добавление

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

Освобождает ресурсы, удерживаемые этим Java одноранговым узлом.

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

Освобождает ресурсы, удерживаемые этим Java одноранговым узлом.

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

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

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

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

Equals(Object)

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

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

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

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

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

Get(Object)

Добавление

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

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

(Унаследовано от Object)
JavaFinalize()
Устаревшие.

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

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

Добавление

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

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

Notify()

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

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

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

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

Добавление

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

Добавление

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

Добавление

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

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

SetHandle(IntPtr, JniHandleOwnership)

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

(Унаследовано от Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

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

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

Добавление

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

Создает управляемый массив из этого Java оболочки массива.

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

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

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

Отменяет регистрацию этого Java однорангового узла из среды выполнения взаимодействия.

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

Добавление

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

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

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

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

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

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

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

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

Имя. Описание
IJavaPeerable.Disposed()

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

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

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

(Унаследовано от JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

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

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

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

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

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

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

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

(Унаследовано от JavaObject)
IJavaPeerable.UnregisterFromRuntime()

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

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

Имя. Описание
GetJniTypeName(IJavaPeerable)

Возвращает имя JNI типа экземпляра self.

JavaAs<TResult>(IJavaPeerable)

Попробуйте принуждать к типуself, проверяяTResult, является ли приведение допустимым на стороне Java.

JavaCast<TResult>(IJavaObject)

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

JavaCast<TResult>(IJavaObject)

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

TryJavaCast<TResult>(IJavaPeerable, TResult)

Попробуйте принуждать к типуself, проверяяTResult, является ли приведение допустимым на стороне Java.

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