Share via


LinkedHashMap Clase

Definición

Tabla hash y implementación de lista vinculada de la Map interfaz, con un orden de iteración predecible.

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

Comentarios

Tabla hash y implementación de lista vinculada de la Map interfaz, con un orden de iteración predecible. Esta implementación difiere de HashMap en que mantiene una lista doblemente vinculada que se ejecuta a través de todas sus entradas. Esta lista vinculada define el orden de iteración, que normalmente es el orden en el que se insertaron las claves en el mapa (orden de inserción). Tenga en cuenta que el orden de inserción no se ve afectado si se vuelve a insertar una clave en el mapa. (Se reinserta una clave k en un mapa m si m.put(k, v) se invoca cuando m.containsKey(k) se devuelve true inmediatamente antes de la invocación).

Esta implementación reserva a sus clientes del orden no especificado, generalmente caótico proporcionado por HashMap (y Hashtable), sin incurrir en el aumento del costo asociado a TreeMap. Se puede usar para generar una copia de un mapa que tenga el mismo orden que el original, independientemente de la implementación del mapa original:

void foo(Map m) {
                    Map copy = new LinkedHashMap(m);
                    ...
                }

Esta técnica es especialmente útil si un módulo toma un mapa en la entrada, lo copia y, posteriormente, devuelve resultados cuyo orden viene determinado por el de la copia. (Los clientes generalmente aprecian tener cosas devueltas en el mismo orden en que se presentaron).

Se proporciona un elemento especial #LinkedHashMap(int,float,boolean) constructor para crear un mapa hash vinculado cuyo orden de iteración es el orden en el que se accedió por última vez a sus entradas, desde la última vez a la que se accedió más recientemente (orden de acceso). Este tipo de mapa es adecuado para crear cachés LRU. La invocación de los putmétodos , putIfAbsent, get, getOrDefaultcomputeIfAbsentcompute, , computeIfPresent, o merge da como resultado un acceso a la entrada correspondiente (suponiendo que existe una vez completada la invocación). Los replace métodos solo dan como resultado un acceso a la entrada si se reemplaza el valor. El putAll método genera un acceso de entrada para cada asignación del mapa especificado, en el orden en que el iterador del conjunto de entrada del mapa especificado proporciona las asignaciones de clave-valor. Ningún otro método genera accesos de entrada. En concreto, las operaciones en vistas de colección no afectan al orden de iteración del mapa de respaldo.

El #removeEldestEntry(Map.Entry) método se puede invalidar para imponer una directiva para quitar asignaciones obsoletas automáticamente cuando se agregan nuevas asignaciones al mapa.

Esta clase proporciona todas las operaciones opcionales Map y permite elementos NULL. Al igual HashMapque , proporciona un rendimiento de tiempo constante para las operaciones básicas (add, contains y remove), suponiendo que la función hash disperse los elementos correctamente entre los cubos. Es probable que el rendimiento sea ligeramente inferior al de HashMap, debido al gasto agregado de mantener la lista vinculada, con una excepción: la iteración en las vistas de colección de un LinkedHashMap requiere tiempo proporcional al tamaño del mapa, independientemente de su capacidad. Es probable que la iteración de un HashMap elemento sea más costosa, lo que requiere tiempo proporcional a su capacidad.

Un mapa hash vinculado tiene dos parámetros que afectan a su rendimiento: capacidad inicial y factor de carga. Se definen exactamente como para HashMap. Sin embargo, tenga en cuenta que la penalización por elegir un valor excesivamente alto para la capacidad inicial es menos grave para esta clase que para HashMap, ya que los tiempos de iteración de esta clase no se ven afectados por la capacidad.

<fuerte>Tenga en cuenta que esta implementación no está sincronizada.</strong> Si varios subprocesos acceden a un mapa hash vinculado simultáneamente y al menos uno de los subprocesos modifica el mapa estructuralmente, se <>debe< sincronizar> externamente. 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 sincronizado accidental al mapa:

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

Una modificación estructural es cualquier operación que agrega o elimina una o varias asignaciones o, en el caso de mapas hash vinculados ordenados por acceso, afecta al orden de iteración. En los mapas hash vinculados ordenados por inserción, simplemente cambiar el valor asociado a una clave que ya está contenida en el mapa no es una modificación estructural. <strong>En los mapas hash vinculados ordenados por el acceso, simplemente consultar el mapa con get es una modificación estructural. </strong>)

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 son <em fail-fast<>/em>: 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 iniciará un ConcurrentModificationException. Por lo tanto, ante 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 el comportamiento rápido de error de un iterador no se puede garantizar tal como está, por lo general, imposible hacer que las garantías difíciles en presencia de modificaciones simultáneas no sincronizadas. 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 exactitud: el comportamiento rápido del error de los iteradores solo se debe usar para detectar errores.

Los divisores devueltos por el método spliterator de las colecciones devueltas por todos los métodos de vista de colección de esta clase son <em>late-binding</em>, <em>fail-fast</em>, y además notifican Spliterator#ORDERED. <em>Note</em>: La implementación de estos divisores en Android Nougat (niveles de API 24 y 25) usa el orden incorrecto (incoherente con los iteradores, que usan el orden correcto), a pesar de notificar Spliterator#ORDERED. Puede usar los siguientes fragmentos de código para obtener un Spliterator ordenado correctamente en el nivel de API 24 y 25: <ul><li>Para una vista c = lhm.keySet()colección , c = lhm.entrySet() o c = lhm.values(), use java.util.Spliterators.spliterator(c, c.spliterator().characteristics()) en lugar de c.spliterator(). <li>En lugar de c.stream() o c.parallelStream(), use java.util.stream.StreamSupport.stream(spliterator, false) para construir un objeto (noparallel) java.util.stream.Stream a partir de este tipo de .Spliterator </ul> Tenga en cuenta que estas soluciones alternativas solo se sugieren donde lhm es .LinkedHashMap

Esta clase es miembro de Java Collections Framework.

Se agregó en la versión 1.4.

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

Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código Project y que se usan según los términos Creative Commons 2.5 Attribution License.

Constructores

LinkedHashMap()

Construye una instancia vacía ordenada por LinkedHashMap inserción con la capacidad inicial predeterminada (16) y el factor de carga (0).

LinkedHashMap(IDictionary)

Construye una instancia ordenada de LinkedHashMap inserción con las mismas asignaciones que el mapa especificado.

LinkedHashMap(Int32)

Construye una instancia vacía ordenada por LinkedHashMap inserción con la capacidad inicial especificada y un factor de carga predeterminado (0.

LinkedHashMap(Int32, Single)

Construye una instancia vacía ordenada por LinkedHashMap inserción con la capacidad inicial y el factor de carga especificados.

LinkedHashMap(Int32, Single, Boolean)

Construye una instancia vacía LinkedHashMap con la capacidad inicial, el factor de carga y el modo de ordenación especificados.

LinkedHashMap(IntPtr, JniHandleOwnership)

Constructor utilizado al crear representaciones administradas de objetos JNI; llamado por el tiempo 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

Que se va a agregar

(Heredado de AbstractMap)
JniIdentityHashCode

Tabla hash y implementación de lista vinculada de la Map interfaz, con un orden de iteración predecible.

(Heredado de Object)
JniPeerMembers

Tabla hash y implementación de lista vinculada de la Map interfaz, con un orden de iteración predecible.

PeerReference

Tabla hash y implementación de lista vinculada de la Map interfaz, con un orden de iteración predecible.

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

Que se va a agregar

(Heredado de AbstractMap)
Clone()

Devuelve una copia superficial de esta HashMap instancia: las claves y los propios valores no se clonan.

(Heredado de HashMap)
Compute(Object, IBiFunction)

Tabla hash y implementación de lista vinculada de la Map interfaz, con un orden de iteración predecible.

(Heredado de HashMap)
ComputeIfAbsent(Object, IFunction)

Tabla hash y implementación de lista vinculada de la Map interfaz, con un orden de iteración predecible.

(Heredado de HashMap)
ComputeIfPresent(Object, IBiFunction)

Tabla hash y implementación de lista vinculada de la Map interfaz, con un orden de iteración predecible.

(Heredado de HashMap)
ContainsKey(Object)

Que se va a agregar

(Heredado de AbstractMap)
ContainsValue(Object)

Que se va a agregar

(Heredado de AbstractMap)
Dispose()

Tabla hash y implementación de lista vinculada de la Map interfaz, con un orden de iteración predecible.

(Heredado de Object)
Dispose(Boolean)

Tabla hash y implementación de lista vinculada de la Map interfaz, con un orden de iteración predecible.

(Heredado de Object)
EntrySet()

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

(Heredado de HashMap)
Equals(Object)

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

(Heredado de Object)
ForEach(IBiConsumer)

Tabla hash y implementación de lista vinculada de la Map interfaz, con un orden de iteración predecible.

(Heredado de HashMap)
Get(Object)

Que se va a agregar

(Heredado de AbstractMap)
GetHashCode()

Devuelve un valor de código hash del objeto.

(Heredado de Object)
GetOrDefault(Object, Object)

Tabla hash y implementación de lista vinculada de la Map interfaz, con un orden de iteración predecible.

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

Que se va a agregar

(Heredado de AbstractMap)
Merge(Object, Object, IBiFunction)

Tabla hash y implementación de lista vinculada de la Map interfaz, con un orden de iteración predecible.

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

Que se va a agregar

(Heredado de AbstractMap)
PutAll(IDictionary)

Que se va a agregar

(Heredado de AbstractMap)
PutIfAbsent(Object, Object)

Tabla hash y implementación de lista vinculada de la Map interfaz, con un orden de iteración predecible.

(Heredado de HashMap)
Remove(Object)

Que se va a agregar

(Heredado de AbstractMap)
Remove(Object, Object)

Quita la asignación de la clave especificada de este mapa si está presente.

(Heredado de HashMap)
RemoveEldestEntry(IMapEntry)

Devuelve true si este mapa debe quitar su entrada más eldest.

Replace(Object, Object)

Tabla hash y implementación de lista vinculada de la Map interfaz, con un orden de iteración predecible.

(Heredado de HashMap)
Replace(Object, Object, Object)

Tabla hash y implementación de lista vinculada de la Map interfaz, con un orden de iteración predecible.

(Heredado de HashMap)
ReplaceAll(IBiFunction)

Tabla hash y implementación de lista vinculada de la Map interfaz, con un orden de iteración predecible.

(Heredado de HashMap)
SetHandle(IntPtr, JniHandleOwnership)

Establece la propiedad Handle.

(Heredado de Object)
Size()

Que se va a agregar

(Heredado de AbstractMap)
ToArray<T>()

Tabla hash y implementación de lista vinculada de la Map interfaz, con un orden de iteración predecible.

(Heredado de Object)
ToString()

Devuelve una representación de cadena del objeto.

(Heredado de Object)
UnregisterFromRuntime()

Tabla hash y implementación de lista vinculada de la Map interfaz, con un orden de iteración predecible.

(Heredado de Object)
Values()

Que se va a 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 <em>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 <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

IJavaPeerable.Disposed()

Tabla hash y implementación de lista vinculada de la Map interfaz, con un orden de iteración predecible.

(Heredado de Object)
IJavaPeerable.DisposeUnlessReferenced()

Tabla hash y implementación de lista vinculada de la Map interfaz, con un orden de iteración predecible.

(Heredado de Object)
IJavaPeerable.Finalized()

Tabla hash y implementación de lista vinculada de la Map interfaz, con un orden de iteración predecible.

(Heredado de Object)
IJavaPeerable.JniManagedPeerState

Tabla hash y implementación de lista vinculada de la Map interfaz, con un orden de iteración predecible.

(Heredado de Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Tabla hash y implementación de lista vinculada de la Map interfaz, con un orden de iteración predecible.

(Heredado de Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Tabla hash y implementación de lista vinculada de la Map interfaz, con un orden de iteración predecible.

(Heredado de Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

Tabla hash y implementación de lista vinculada de la Map interfaz, con un orden de iteración predecible.

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

Tabla hash y implementación de lista vinculada de la Map interfaz, con un orden de iteración predecible.

GetJniTypeName(IJavaPeerable)

Tabla hash y implementación de lista vinculada de la Map interfaz, con un orden de iteración predecible.

Se aplica a