LinkedHashMap Clase

Definición

Tabla hash y implementación de lista vinculada de la Map interfaz, con orden de encuentro bien definido.

[Android.Runtime.Register("java/util/LinkedHashMap", DoNotGenerateAcw=true)]
[Java.Interop.JavaTypeParameters(new System.String[] { "K", "V" })]
public class LinkedHashMap : Java.Util.HashMap, IDisposable, Java.Util.ISequencedMap
[<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
    interface ISequencedMap
Herencia
Atributos
Implementaciones

Comentarios

Tabla hash y implementación de lista vinculada de la Map interfaz, con orden de encuentro bien definido. 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 encuentro (el orden de iteración), que normalmente es el orden en el que se insertaron las claves en el mapa (orden de inserción). La entrada insertada menos recientemente (la más reciente) es la primera, y la entrada más joven es la última. Tenga en cuenta que el orden de encuentro no se ve afectado si se vuelve a insertar una clave en el mapa con el put método . (Se reinserte 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). La vista ordenada inverso de este mapa está en orden opuesto, con la entrada más joven que aparece primero y la entrada más reciente aparece en último lugar. El orden de encuentro de las entradas que ya están en el mapa se puede cambiar mediante los #putFirst putFirst métodos y #putLast putLast .

Esta implementación ahorra 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:

{@code
                void foo(Map<String, Integer> m) {
                    Map<String, Integer> copy = new LinkedHashMap<>(m);
                    ...
                }
            }

Esta técnica es especialmente útil si un módulo toma un mapa en la entrada, lo copia y después 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 especial #LinkedHashMap(int,float,boolean) constructor para crear un mapa hash vinculado cuyo orden de encuentro es el orden en el que se accedió por última vez a sus entradas, desde el acceso menos reciente a más reciente (orden de acceso). Este tipo de mapa es adecuado para compilar cachés LRU. La invocación de los putmétodos , putIfAbsent, getgetOrDefaultcomputecomputeIfAbsent, computeIfPresento 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. Invocar estos métodos en la vista invertida genera accesos a entradas en el mapa de respaldo. Tenga en cuenta que, en la vista invertida, un acceso a una entrada lo mueve primero en orden de encuentro. Métodos de posicionamiento explícitos como putFirst o lastEntry, ya sea en el mapa o en su vista ordenada inversa, realice la operación de posicionamiento y no genere accesos de entrada. Las operaciones en las keySetvistas , valuesy entrySet o en sus homólogos secuenciados no afectan al orden de encuentro del mapa de respaldo.

El #removeEldestEntry(Map.Entry) método se puede invalidar para imponer una directiva para quitar las asignaciones obsoletas automáticamente cuando se agregan nuevas asignaciones al mapa. Como alternativa, dado que la entrada "eldest" es la primera entrada en orden de encuentro, los programas pueden inspeccionar y quitar asignaciones obsoletas mediante el uso de los #firstEntry firstEntry métodos y #pollFirstEntry pollFirstEntry .

Esta clase proporciona todas las operaciones y Map opcionalesSequencedMap, y permite elementos NULL. Al igual HashMapque , proporciona un rendimiento en tiempo constante para las operaciones básicas (addy containsremove), 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: Iteración sobre 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 sobre una HashMap 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 simultáneamente a un mapa hash vinculado y al menos uno de los subprocesos modifica el mapa estructuralmente, debe<>< sincronizarse> 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 asincrónico 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 método propio remove 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.

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 notifica 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 spliterador 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 (noparallel) java.util.stream.Stream a partir de este tipo Spliteratorde . </ul> Tenga en cuenta que estas soluciones alternativas solo se sugieren donde lhm es .LinkedHashMap

Esta clase es miembro del marco de colecciones de Java.

Agregado en la versión 1.4.

Java documentación para java.util.LinkedHashMap.

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
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 LinkedHashMap por inserción con las mismas asignaciones que el mapa especificado.

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(Int32, Single)

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

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

Tabla hash y implementación de lista vinculada de la Map interfaz, con orden de encuentro bien definido.

(Heredado de JavaObject)
JniPeerMembers

Tabla hash y implementación de lista vinculada de la Map interfaz, con orden de encuentro bien definido.

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

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 orden de encuentro bien definido.

(Heredado de HashMap)
ComputeIfAbsent(Object, IFunction)

Tabla hash y implementación de lista vinculada de la Map interfaz, con orden de encuentro bien definido.

(Heredado de HashMap)
ComputeIfPresent(Object, IBiFunction)

Tabla hash y implementación de lista vinculada de la Map interfaz, con orden de encuentro bien definido.

(Heredado de HashMap)
Construct(JniObjectReference, JniObjectReferenceOptions)

Tabla hash y implementación de lista vinculada de la Map interfaz, con orden de encuentro bien definido.

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

Tabla hash y implementación de lista vinculada de la Map interfaz, con orden de encuentro bien definido.

(Heredado de JavaObject)
EntrySet()

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

(Heredado de HashMap)
Equals(Object)

Tabla hash y implementación de lista vinculada de la Map interfaz, con orden de encuentro bien definido.

(Heredado de JavaObject)
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 orden de encuentro bien definido.

(Heredado de HashMap)
Get(Object)

Por 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 orden de encuentro bien definido.

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

Por agregar

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

Tabla hash y implementación de lista vinculada de la Map interfaz, con orden de encuentro bien definido.

(Heredado de HashMap)
NewLinkedHashMap(Int32)

Tabla hash y implementación de lista vinculada de la Map interfaz, con orden de encuentro bien definido.

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)
PutFirst(Object, Object)

Por agregar

PutIfAbsent(Object, Object)

Tabla hash y implementación de lista vinculada de la Map interfaz, con orden de encuentro bien definido.

(Heredado de HashMap)
PutLast(Object, Object)

Por agregar

Remove(Object, Object)

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

(Heredado de HashMap)
Remove(Object)

Por agregar

(Heredado de AbstractMap)
RemoveEldestEntry(IMapEntry)

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

Replace(Object, Object, Object)

Tabla hash y implementación de lista vinculada de la Map interfaz, con orden de encuentro bien definido.

(Heredado de HashMap)
Replace(Object, Object)

Tabla hash y implementación de lista vinculada de la Map interfaz, con orden de encuentro bien definido.

(Heredado de HashMap)
ReplaceAll(IBiFunction)

Tabla hash y implementación de lista vinculada de la Map interfaz, con orden de encuentro bien definido.

(Heredado de HashMap)
Reversed()

Tabla hash y implementación de lista vinculada de la Map interfaz, con orden de encuentro bien definido.

SequencedEntrySet()

Tabla hash y implementación de lista vinculada de la Map interfaz, con orden de encuentro bien definido.

SequencedKeySet()

Tabla hash y implementación de lista vinculada de la Map interfaz, con orden de encuentro bien definido.

SequencedValues()

Tabla hash y implementación de lista vinculada de la Map interfaz, con orden de encuentro bien definido.

SetHandle(IntPtr, JniHandleOwnership)

Establece la propiedad Handle.

(Heredado de Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

Tabla hash y implementación de lista vinculada de la Map interfaz, con orden de encuentro bien definido.

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

Tabla hash y implementación de lista vinculada de la Map interfaz, con orden de encuentro bien definido.

(Heredado de JavaObject)
IJavaPeerable.Finalized()

Tabla hash y implementación de lista vinculada de la Map interfaz, con orden de encuentro bien definido.

(Heredado de JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

Tabla hash y implementación de lista vinculada de la Map interfaz, con orden de encuentro bien definido.

(Heredado de JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Tabla hash y implementación de lista vinculada de la Map interfaz, con orden de encuentro bien definido.

(Heredado de JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Tabla hash y implementación de lista vinculada de la Map interfaz, con orden de encuentro bien definido.

(Heredado de JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

Tabla hash y implementación de lista vinculada de la Map interfaz, con orden de encuentro bien definido.

(Heredado de JavaObject)
IJavaPeerable.UnregisterFromRuntime()

Tabla hash y implementación de lista vinculada de la Map interfaz, con orden de encuentro bien definido.

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)

Tabla hash y implementación de lista vinculada de la Map interfaz, con orden de encuentro bien definido.

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