IdentityHashMap Clase

Definición

Esta clase implementa la Map interfaz con una tabla hash, utilizando la igualdad de referencia en lugar de la igualdad de objetos al comparar claves (y valores).

[Android.Runtime.Register("java/util/IdentityHashMap", DoNotGenerateAcw=true)]
[Java.Interop.JavaTypeParameters(new System.String[] { "K", "V" })]
public class IdentityHashMap : Java.Util.AbstractMap, IDisposable, Java.Interop.IJavaPeerable, Java.IO.ISerializable, Java.Lang.ICloneable
[<Android.Runtime.Register("java/util/IdentityHashMap", DoNotGenerateAcw=true)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "K", "V" })>]
type IdentityHashMap = class
    inherit AbstractMap
    interface ISerializable
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
    interface ICloneable
    interface IMap
Herencia
IdentityHashMap
Atributos
Implementaciones

Comentarios

Esta clase implementa la Map interfaz con una tabla hash, utilizando la igualdad de referencia en lugar de la igualdad de objetos al comparar claves (y valores). En otras palabras, en , IdentityHashMapdos claves k1 y k2 se consideran iguales si y solo si (k1==k2). (En implementaciones normales Map (como HashMap) dos claves k1 y k2 se consideran iguales si y solo si (k1==null ? k2==null : k1.equals(k2)).

<b>Esta clase no es una implementación de uso Map general. Aunque esta clase implementa la Map interfaz, infringe intencionadamente el Map's contrato general, que exige el uso del equals método al comparar objetos. Esta clase está diseñada para su uso solo en los casos excepcionales en los que se requiere semántica de igualdad de referencias.</B>

Un uso típico de esta clase es las transformaciones de gráficos de objetos que conservan la topología, como la serialización o la copia en profundidad. Para realizar esta transformación, un programa debe mantener una "tabla de nodos" que realice un seguimiento de todas las referencias de objeto que ya se hayan procesado. La tabla de nodos no debe equivaler a objetos distintos aunque sean iguales. Otro uso típico de esta clase es mantener objetos proxy. Por ejemplo, una instalación de depuración podría querer mantener un objeto proxy para cada objeto del programa que se está depurando.

Esta clase proporciona todas las operaciones de asignación opcionales y permite null valores y la null clave. Esta clase no garantiza el orden del mapa; en particular, no garantiza que el pedido permanezca constante con el tiempo.

Esta clase proporciona un rendimiento constante para las operaciones básicas (get y put), suponiendo que la función hash de identidad del sistema (System#identityHashCode(Object)) dispersa los elementos correctamente entre los cubos.

Esta clase tiene un parámetro de ajuste (que afecta al rendimiento pero no a la semántica): tamaño máximo esperado. Este parámetro es el número máximo de asignaciones de clave-valor que se espera que contenga el mapa. Internamente, este parámetro se usa para determinar el número de cubos que componen inicialmente la tabla hash. La relación precisa entre el tamaño máximo esperado y el número de cubos no se especifica.

Si el tamaño del mapa (el número de asignaciones de clave-valor) supera lo suficiente el tamaño máximo esperado, se aumenta el número de cubos. Aumentar el número de cubos ("rehashing") puede ser bastante costoso, por lo que paga por crear mapas hash de identidad con un tamaño máximo esperado suficientemente grande. Por otro lado, la iteración en las vistas de colección requiere tiempo proporcional al número de cubos de la tabla hash, por lo que paga por no establecer el tamaño máximo esperado demasiado alto si le preocupa especialmente el rendimiento de la iteración o el uso de memoria.

<fuerte>Tenga en cuenta que esta implementación no está sincronizada.</strong> Si varios subprocesos acceden simultáneamente a un mapa hash de identidad y al menos uno de los subprocesos modifica el mapa estructuralmente, debe sincronizarse externamente. (Una modificación estructural es cualquier operación que agrega o elimina una o varias asignaciones; simplemente cambia el valor asociado a una clave que una instancia ya contiene no es una modificación estructural). Esto se logra normalmente mediante la sincronización en algún objeto que encapsula naturalmente el mapa.

Si no existe este objeto, el mapa debe "encapsularse" mediante el Collections#synchronizedMap Collections.synchronizedMap método . Esto se hace mejor en el momento de la creación, para evitar el acceso no asincrónico accidental al mapa:

Map m = Collections.synchronizedMap(new IdentityHashMap(...));

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: los iteradores rápidos con error solo se deben usar para detectar errores.

Esta clase es miembro de Java Collections Framework.

Se agregó en la versión 1.4.

Documentación de Java para java.util.IdentityHashMap.

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

IdentityHashMap()

Construye una nueva asignación hash de identidad vacía con un tamaño máximo esperado predeterminado (21).

IdentityHashMap(IDictionary)

Construye un nuevo mapa hash de identidad que contiene las asignaciones de claves-valor en el mapa especificado.

IdentityHashMap(Int32)

Construye un nuevo mapa vacío con el tamaño máximo esperado especificado.

IdentityHashMap(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 Objectobjeto .

(Heredado de Object)
Handle

Identificador de la instancia de Android subyacente.

(Heredado de Object)
IsEmpty

Para agregar

(Heredado de AbstractMap)
JniIdentityHashCode

Esta clase implementa la Map interfaz con una tabla hash, utilizando la igualdad de referencia en lugar de la igualdad de objetos al comparar claves (y valores).

(Heredado de Object)
JniPeerMembers

Esta clase implementa la Map interfaz con una tabla hash, utilizando la igualdad de referencia en lugar de la igualdad de objetos al comparar claves (y valores).

PeerReference

Esta clase implementa la Map interfaz con una tabla hash, utilizando la igualdad de referencia en lugar de la igualdad de objetos al comparar claves (y valores).

(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

Clear()

Para agregar

(Heredado de AbstractMap)
Clone()

Devuelve una copia superficial de esta asignación hash de identidad: las claves y los propios valores no se clonan.

ContainsKey(Object)

Para agregar

(Heredado de AbstractMap)
ContainsValue(Object)

Para agregar

(Heredado de AbstractMap)
Dispose()

Esta clase implementa la Map interfaz con una tabla hash, utilizando la igualdad de referencia en lugar de la igualdad de objetos al comparar claves (y valores).

(Heredado de Object)
Dispose(Boolean)

Esta clase implementa la Map interfaz con una tabla hash, utilizando la igualdad de referencia en lugar de la igualdad de objetos al comparar claves (y valores).

(Heredado de Object)
EntrySet()

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

Equals(Object)

Indica si algún otro objeto es "igual a" este.

(Heredado de Object)
ForEach(IBiConsumer)

Esta clase implementa la Map interfaz con una tabla hash, utilizando la igualdad de referencia en lugar de la igualdad de objetos al comparar claves (y valores).

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)

Esta clase implementa la Map interfaz con una tabla hash, utilizando la igualdad de referencia en lugar de la igualdad de objetos al comparar claves (y valores).

SetHandle(IntPtr, JniHandleOwnership)

Establece la propiedad Handle.

(Heredado de Object)
Size()

Para agregar

(Heredado de AbstractMap)
ToArray<T>()

Esta clase implementa la Map interfaz con una tabla hash, utilizando la igualdad de referencia en lugar de la igualdad de objetos al comparar claves (y valores).

(Heredado de Object)
ToString()

Devuelve una representación de cadena del objeto.

(Heredado de Object)
UnregisterFromRuntime()

Esta clase implementa la Map interfaz con una tabla hash, utilizando la igualdad de referencia en lugar de la igualdad de objetos al comparar claves (y valores).

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

Esta clase implementa la Map interfaz con una tabla hash, utilizando la igualdad de referencia en lugar de la igualdad de objetos al comparar claves (y valores).

(Heredado de Object)
IJavaPeerable.DisposeUnlessReferenced()

Esta clase implementa la Map interfaz con una tabla hash, utilizando la igualdad de referencia en lugar de la igualdad de objetos al comparar claves (y valores).

(Heredado de Object)
IJavaPeerable.Finalized()

Esta clase implementa la Map interfaz con una tabla hash, utilizando la igualdad de referencia en lugar de la igualdad de objetos al comparar claves (y valores).

(Heredado de Object)
IJavaPeerable.JniManagedPeerState

Esta clase implementa la Map interfaz con una tabla hash, utilizando la igualdad de referencia en lugar de la igualdad de objetos al comparar claves (y valores).

(Heredado de Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Esta clase implementa la Map interfaz con una tabla hash, utilizando la igualdad de referencia en lugar de la igualdad de objetos al comparar claves (y valores).

(Heredado de Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Esta clase implementa la Map interfaz con una tabla hash, utilizando la igualdad de referencia en lugar de la igualdad de objetos al comparar claves (y valores).

(Heredado de Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

Esta clase implementa la Map interfaz con una tabla hash, utilizando la igualdad de referencia en lugar de la igualdad de objetos al comparar claves (y valores).

(Heredado de Object)

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)

Esta clase implementa la Map interfaz con una tabla hash, utilizando la igualdad de referencia en lugar de la igualdad de objetos al comparar claves (y valores).

GetJniTypeName(IJavaPeerable)

Esta clase implementa la Map interfaz con una tabla hash, utilizando la igualdad de referencia en lugar de la igualdad de objetos al comparar claves (y valores).

Se aplica a