WeakHashMap Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Implementación basada en tabla hash de la Map
interfaz, con <>claves< débiles/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
- Herencia
- Atributos
- Implementaciones
Comentarios
Implementación basada en tabla hash de la Map
interfaz, con <>claves< débiles/em>. Una entrada de un WeakHashMap
elemento se quitará automáticamente cuando su clave ya no esté en uso normal. Con mayor precisión, la presencia de una asignación para una clave determinada no impedirá que el recolector de elementos no utilizados descarte la clave, es decir, se haga finalizable, finalizado y luego reclamada. Cuando se ha descartado una clave, su entrada se quita eficazmente del mapa, por lo que esta clase se comporta de forma algo diferente de otras Map
implementaciones.
Se admiten los valores NULL y la clave null. Esta clase tiene características de rendimiento similares a las de la HashMap
clase y tiene los mismos parámetros de eficiencia de <em>initial capacity</em> y <em>load factor</em>.
Al igual que la mayoría de las clases de colección, esta clase no está sincronizada. Se puede construir un sincronizado WeakHashMap
mediante el Collections#synchronizedMap Collections.synchronizedMap
método .
Esta clase está pensada principalmente para su uso con objetos clave cuyos equals
métodos prueban la identidad de objeto mediante el ==
operador . Una vez que se descarta dicha clave, nunca se puede volver a crear, por lo que es imposible realizar una búsqueda de esa clave en un WeakHashMap
momento posterior y sorprenderse de que su entrada se haya quitado. Esta clase funcionará perfectamente con objetos clave cuyos equals
métodos no se basan en la identidad de objeto, como String
las instancias. Sin embargo, con estos objetos clave recreables, la eliminación automática de WeakHashMap
entradas cuyas claves se han descartado puede resultar confusa.
El comportamiento de la WeakHashMap
clase depende en parte de las acciones del recolector de elementos no utilizados, por lo que varios invariantes conocidos (aunque no necesarios) Map
no contienen para esta clase. Dado que el recolector de elementos no utilizados puede descartar claves en cualquier momento, puede WeakHashMap
comportarse como si un subproceso desconocido quitara silenciosamente las entradas. En concreto, aunque se sincronice en una WeakHashMap
instancia e invoque ninguno de sus métodos mutadores, es posible que el size
método devuelva valores más pequeños a lo largo del tiempo, para que el isEmpty
método devuelva false
y, a continuacióntrue
, , para que el containsKey
método devuelva true
y versiones posteriores false
para una clave determinada, para que el get
método devuelva un valor para una clave determinada, pero más adelante devuelva null
, para que el put
método devuelva y el remove
método que se va null
a devolver false
para una clave que anteriormente parecía estar en el mapa, y para exámenes sucesivos del conjunto de claves, la colección de valores y el conjunto de entrada para producir sucesivamente números de elementos más pequeños.
Cada objeto de clave de un WeakHashMap
se almacena indirectamente como referencia de una referencia débil. Por lo tanto, una clave se quitará automáticamente solo después de que el recolector de elementos no utilizados haya borrado las referencias débiles, tanto dentro como fuera del mapa.
<>strong Implementation note:</strong> Los objetos value de un WeakHashMap
objeto se mantienen mediante referencias seguras normales. Por lo tanto, se debe tener cuidado para asegurarse de que los objetos de valor no hacen referencia fuerte a sus propias claves, ya sea directa o indirectamente, ya que esto impedirá que se descarten las claves. Tenga en cuenta que un objeto value puede hacer referencia indirectamente a su clave a través del WeakHashMap
propio objeto ; es decir, un objeto value puede hacer referencia fuertemente a algún otro objeto de clave cuyo objeto de valor asociado, a su vez, haga referencia fuertemente a la clave del primer objeto de valor. Si los valores del mapa no se basan en el mapa que contiene referencias fuertes a ellos, una manera de tratar con esto consiste en ajustar los valores dentro WeakReferences
de antes de insertarlos, como en: m.put(key, new WeakReference(value))
y, a continuación, desencapsular en cada get
.
Los iteradores devueltos por el iterator
método de las colecciones devueltas por todos los "métodos de vista de colección" de esta clase no son rápidos: si el mapa se modifica estructuralmente en cualquier momento después de crear el iterador, excepto a través del propio remove
método del iterador, el iterador iniciará un ConcurrentModificationException
. Por lo tanto, en el caso de la modificación simultánea, el iterador falla rápidamente y limpiamente, en lugar de arriesgarse a un comportamiento arbitrario y no determinista en un momento indeterminado en el futuro.
Tenga en cuenta que el comportamiento rápido de error de un iterador no se puede garantizar tal cual, por lo general, imposible hacer cualquier garantía difícil en presencia de modificaciones simultáneas no asincrónicas. Los iteradores rápidos de error producen ConcurrentModificationException
un mejor esfuerzo. Por lo tanto, sería incorrecto escribir un programa que dependiera de esta excepción por su corrección: el comportamiento rápido de errores de los iteradores solo se debe usar para detectar errores.
Esta clase es miembro de Java Collections Framework.
Se agregó en la versión 1.2.
Documentación de Java para java.util.WeakHashMap
.
Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código y se usan según los términos descritos en la creative Commons 2.5.
Constructores
WeakHashMap() |
Construye un nuevo vacío |
WeakHashMap(IDictionary) |
Construye un nuevo |
WeakHashMap(Int32) |
Construye un nuevo vacío |
WeakHashMap(Int32, Single) |
Construye un nuevo vacío |
WeakHashMap(IntPtr, JniHandleOwnership) |
Constructor utilizado al crear representaciones administradas de objetos JNI; llamado por el entorno de ejecución. |
Propiedades
Class |
Devuelve la clase en tiempo de ejecución de este |
Handle |
Identificador de la instancia de Android subyacente. (Heredado de Object) |
IsEmpty |
Para agregar (Heredado de AbstractMap) |
JniIdentityHashCode |
Implementación basada en tabla hash de la |
JniPeerMembers |
Implementación basada en tabla hash de la |
PeerReference |
Implementación basada en tabla hash de la |
ThresholdClass |
Esta API admite la infraestructura mono para Android y no está pensada para usarse directamente desde el código. |
ThresholdType |
Esta API admite la infraestructura mono para Android y no está pensada para usarse directamente desde el código. |
Métodos
Clear() |
Para agregar (Heredado de AbstractMap) |
Clone() |
Crea y devuelve una copia de este objeto. (Heredado de Object) |
ContainsKey(Object) |
Para agregar (Heredado de AbstractMap) |
ContainsValue(Object) |
Para agregar (Heredado de AbstractMap) |
Dispose() |
Implementación basada en tabla hash de la |
Dispose(Boolean) |
Implementación basada en tabla hash de la |
EntrySet() |
Devuelve una |
Equals(Object) |
Indica si algún otro objeto es "igual a" este. (Heredado de Object) |
ForEach(IBiConsumer) |
Implementación basada en tabla hash de la |
Get(Object) |
Para agregar (Heredado de AbstractMap) |
GetHashCode() |
Devuelve un valor de código hash del objeto. (Heredado de Object) |
JavaFinalize() |
Llamado por el recolector de elementos no utilizados en un objeto cuando la recolección de elementos no utilizados determina que no hay más referencias al objeto. (Heredado de Object) |
KeySet() |
Para agregar (Heredado de AbstractMap) |
Notify() |
Activa un único subproceso que está esperando en el monitor de este objeto. (Heredado de Object) |
NotifyAll() |
Activa todos los subprocesos que están esperando en el monitor de este objeto. (Heredado de Object) |
Put(Object, Object) |
Para agregar (Heredado de AbstractMap) |
PutAll(IDictionary) |
Para agregar (Heredado de AbstractMap) |
Remove(Object) |
Para agregar (Heredado de AbstractMap) |
ReplaceAll(IBiFunction) |
Implementación basada en tabla hash de la |
SetHandle(IntPtr, JniHandleOwnership) |
Establece la propiedad Handle. (Heredado de Object) |
Size() |
Para agregar (Heredado de AbstractMap) |
ToArray<T>() |
Implementación basada en tabla hash de la |
ToString() |
Devuelve una representación de cadena del objeto. (Heredado de Object) |
UnregisterFromRuntime() |
Implementación basada en tabla hash de la |
Values() |
Para agregar (Heredado de AbstractMap) |
Wait() |
Hace que el subproceso actual espere hasta que se despierte, normalmente por ser em notificado/em> o <em>interrumpido</em>.<>< (Heredado de Object) |
Wait(Int64) |
Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <notificado<>/em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real. (Heredado de Object) |
Wait(Int64, Int32) |
Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <notificado<>/em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real. (Heredado de Object) |
Implementaciones de interfaz explícitas
IJavaPeerable.Disposed() |
Implementación basada en tabla hash de la |
IJavaPeerable.DisposeUnlessReferenced() |
Implementación basada en tabla hash de la |
IJavaPeerable.Finalized() |
Implementación basada en tabla hash de la |
IJavaPeerable.JniManagedPeerState |
Implementación basada en tabla hash de la |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
Implementación basada en tabla hash de la |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Implementación basada en tabla hash de la |
IJavaPeerable.SetPeerReference(JniObjectReference) |
Implementación basada en tabla hash de la |
Métodos de extensión
JavaCast<TResult>(IJavaObject) |
Realiza una conversión de tipos comprobados en tiempo de ejecución de Android. |
JavaCast<TResult>(IJavaObject) |
Implementación basada en tabla hash de la |
GetJniTypeName(IJavaPeerable) |
Implementación basada en tabla hash de la |