WeakHashMap Clase

Definición

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
[<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. Más precisamente, 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 se haya quitado su entrada. Esta clase funcionará perfectamente bien 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 se mantienen 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ón true, , 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 null y el remove método para devolver false 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 entradas para producir sucesivamente un número de elementos más pequeño.

Cada objeto de clave de se WeakHashMap 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.

<nota de implementación fuerte>:/strong< Los objetos de valor de un > se mantienen mediante referenciasWeakHashMap 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 de valor 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, se refiere fuertemente a la clave del primer objeto de valor. Si los valores del mapa no se basan en el mapa que contiene referencias seguras, una manera de tratar con esto es encapsular los valores dentro WeakReferences de antes de insertar, como en : m.put(key, new WeakReference(value))y, a continuación, desencapsular 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, de cualquier manera excepto a través del propio remove método del iterador, el iterador producirá un ConcurrentModificationException. Por lo tanto, en el caso de la modificación simultánea, el iterador produce un error rápido y limpio, en lugar de arriesgarse a un comportamiento arbitrario y no determinista en un momento indeterminado en el futuro.

Tenga en cuenta que no se puede garantizar el comportamiento rápido de un iterador, ya que es, por lo general, imposible hacer ninguna garantía dura en presencia de modificaciones simultáneas no asincrónicas. Los iteradores rápidos de error inician ConcurrentModificationException el 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 del error de los iteradores solo se debe usar para detectar errores.

Esta clase es miembro del marco de colecciones de Java.

Agregado en la versión 1.2.

Java documentación para java.util.WeakHashMap.

Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el Android y se usan según los términos descritos en creative Creative Commons 2.5 Attribution License.

Constructores

Nombre Description
WeakHashMap()

Construye un nuevo vacío WeakHashMap con la capacidad inicial predeterminada (16) y el factor de carga (0).

WeakHashMap(IDictionary)

Construye un nuevo WeakHashMap con las mismas asignaciones que el mapa especificado.

WeakHashMap(Int32, Single)

Construye un nuevo vacío WeakHashMap con la capacidad inicial dada y el factor de carga especificado.

WeakHashMap(Int32)

Construye un nuevo vacío WeakHashMap con la capacidad inicial dada y el factor de carga predeterminado (0).

WeakHashMap(IntPtr, JniHandleOwnership)

Constructor utilizado al crear representaciones administradas de objetos JNI; llamado por el tiempo de ejecución.

Propiedades

Nombre Description
Class

Devuelve la clase en tiempo de ejecución de este Objectobjeto .

(Heredado de Object)
Handle

Identificador de la instancia de Android subyacente.

(Heredado de Object)
IsEmpty

Por agregar

(Heredado de AbstractMap)
JniIdentityHashCode

Obtiene el código hash de identidad asignado a este Java del mismo nivel por el tiempo de ejecución de interoperabilidad.

(Heredado de Object)
JniManagedPeerState

Implementación basada en tabla hash de la Map interfaz, con <>claves< débiles/em>.

(Heredado de JavaObject)
JniPeerMembers

Implementación basada en tabla hash de la Map interfaz, con <>claves< débiles/em>.

PeerReference

Obtiene la referencia de objeto JNI para este Java del mismo nivel.

(Heredado de Object)
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

Nombre Description
Clear()

Por agregar

(Heredado de AbstractMap)
Clone()

Crea y devuelve una copia de este objeto.

(Heredado de Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

Implementación basada en tabla hash de la Map interfaz, con <>claves< débiles/em>.

(Heredado de JavaObject)
ContainsKey(Object)

Por agregar

(Heredado de AbstractMap)
ContainsValue(Object)

Por agregar

(Heredado de AbstractMap)
Dispose()

Libera los recursos mantenidos por este Java del mismo nivel.

(Heredado de Object)
Dispose(Boolean)

Libera los recursos mantenidos por este Java del mismo nivel.

(Heredado de Object)
DisposeUnlessReferenced()

Implementación basada en tabla hash de la Map interfaz, con <>claves< débiles/em>.

(Heredado de JavaObject)
EntrySet()

Devuelve una Set vista de las asignaciones contenidas en este mapa.

Equals(Object)

Implementación basada en tabla hash de la Map interfaz, con <>claves< débiles/em>.

(Heredado de JavaObject)
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 Map interfaz, con <>claves< débiles/em>.

Get(Object)

Por agregar

(Heredado de AbstractMap)
GetHashCode()

Devuelve un valor de código hash para el objeto .

(Heredado de Object)
JavaFinalize()

Lo llama 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()

Por agregar

(Heredado de AbstractMap)
NewWeakHashMap(Int32)

Implementación basada en tabla hash de la Map interfaz, con <>claves< débiles/em>.

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)

Por agregar

(Heredado de AbstractMap)
PutAll(IDictionary)

Por agregar

(Heredado de AbstractMap)
Remove(Object)

Por agregar

(Heredado de AbstractMap)
ReplaceAll(IBiFunction)

Implementación basada en tabla hash de la Map interfaz, con <>claves< débiles/em>.

SetHandle(IntPtr, JniHandleOwnership)

Establece la propiedad Handle.

(Heredado de Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

Implementación basada en tabla hash de la Map interfaz, con <>claves< débiles/em>.

(Heredado de JavaObject)
Size()

Por agregar

(Heredado de AbstractMap)
ToArray<T>()

Crea una matriz administrada a partir de este contenedor de matriz Java.

(Heredado de Object)
ToString()

Devuelve una representación de cadena del objeto .

(Heredado de Object)
UnregisterFromRuntime()

Anula el registro de este Java del mismo nivel del tiempo de ejecución de interoperabilidad.

(Heredado de Object)
Values()

Por 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, Int32)

Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <em>notificado</em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real.

(Heredado de Object)
Wait(Int64)

Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <em>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

Nombre Description
IJavaPeerable.Disposed()

Implementación basada en tabla hash de la Map interfaz, con <>claves< débiles/em>.

(Heredado de JavaObject)
IJavaPeerable.Finalized()

Implementación basada en tabla hash de la Map interfaz, con <>claves< débiles/em>.

(Heredado de JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

Implementación basada en tabla hash de la Map interfaz, con <>claves< débiles/em>.

(Heredado de JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Implementación basada en tabla hash de la Map interfaz, con <>claves< débiles/em>.

(Heredado de JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Implementación basada en tabla hash de la Map interfaz, con <>claves< débiles/em>.

(Heredado de JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

Implementación basada en tabla hash de la Map interfaz, con <>claves< débiles/em>.

(Heredado de JavaObject)
IJavaPeerable.UnregisterFromRuntime()

Implementación basada en tabla hash de la Map interfaz, con <>claves< débiles/em>.

Métodos de extensión

Nombre Description
GetJniTypeName(IJavaPeerable)

Obtiene el nombre JNI del tipo de la instancia self.

JavaAs<TResult>(IJavaPeerable)

Intente coerción self para escribir TResult, comprobando que la coerción es válida en el lado de Java.

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 Map interfaz, con <>claves< débiles/em>.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Intente coerción self para escribir TResult, comprobando que la coerción es válida en el lado de Java.

Se aplica a