IMap Interfaz
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í.
Objeto que asigna claves a valores.
[Android.Runtime.Register("java/util/Map", "", "Java.Util.IMapInvoker")]
[Java.Interop.JavaTypeParameters(new System.String[] { "K", "V" })]
public interface IMap : Android.Runtime.IJavaObject, IDisposable, Java.Interop.IJavaPeerable
[<Android.Runtime.Register("java/util/Map", "", "Java.Util.IMapInvoker")>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "K", "V" })>]
type IMap = interface
interface IJavaObject
interface IDisposable
interface IJavaPeerable
- Derivado
- Atributos
- Implementaciones
Comentarios
Objeto que asigna claves a valores. Un mapa no puede contener claves duplicadas; cada clave puede asignarse a un valor como máximo.
Esta interfaz tiene lugar de la Dictionary
clase , que era una clase totalmente abstracta en lugar de una interfaz.
La Map
interfaz proporciona tres vistas de colección, que permiten que el contenido de un mapa se vea como un conjunto de claves, una colección de valores o un conjunto de asignaciones de clave-valor. El orden de un mapa se define como el orden en que los iteradores de las vistas de colección del mapa devuelven sus elementos. Algunas implementaciones de mapa, como la TreeMap
clase , hacen garantías específicas en cuanto a su orden; otras, como la HashMap
clase , no lo hacen.
Nota: Se debe tener mucho cuidado si los objetos mutables se usan como claves de mapa. El comportamiento de un mapa no se especifica si el valor de un objeto cambia de una manera que afecta a equals
las comparaciones mientras el objeto es una clave del mapa. Un caso especial de esta prohibición es que no se permite que un mapa se contenga como clave. Aunque se permite que un mapa se contenga como un valor, se recomienda extrema precaución: los equals
métodos y hashCode
ya no están bien definidos en este mapa.
Todas las clases de implementación de mapa de uso general deben proporcionar dos constructores "estándar": un constructor void (sin argumentos) que crea un mapa vacío y un constructor con un único argumento de tipo Map
, que crea un nuevo mapa con las mismas asignaciones de clave-valor que su argumento. En efecto, el último constructor permite al usuario copiar cualquier mapa, lo que genera un mapa equivalente de la clase deseada. No hay ninguna manera de aplicar esta recomendación (ya que las interfaces no pueden contener constructores), pero todas las implementaciones de mapa de uso general del JDK cumplen.
Los métodos "destructivos" contenidos en esta interfaz, es decir, los métodos que modifican el mapa en el que operan, se especifican para iniciar UnsupportedOperationException
si este mapa no admite la operación. Si este es el caso, estos métodos pueden, pero no son necesarios, producir si UnsupportedOperationException
la invocación no tendría ningún efecto en el mapa. Por ejemplo, invocar el #putAll(Map)
método en una asignación no modificable puede, pero no es necesario, producir la excepción si el mapa cuyas asignaciones van a estar "superpuestas" está vacía.
Algunas implementaciones de mapa tienen restricciones en las claves y los valores que pueden contener. Por ejemplo, algunas implementaciones prohíben valores y claves NULL, y algunas tienen restricciones en los tipos de sus claves. Si se intenta insertar una clave o un valor no válidos, se produce una excepción no desactivada, normalmente NullPointerException
o ClassCastException
. Si se intenta consultar la presencia de una clave o valor no apto, se puede producir una excepción o simplemente devolver false; algunas implementaciones mostrarán el comportamiento anterior y algunas mostrarán esta última. Por lo general, si se intenta realizar una operación en una clave o un valor no aptos cuya finalización no daría lugar a la inserción de un elemento no apto en el mapa, se puede producir una excepción o puede realizarse correctamente, en la opción de la implementación. Estas excepciones se marcan como "opcionales" en la especificación de esta interfaz.
Muchos métodos de las interfaces de Collections Framework se definen en términos del Object#equals(Object) equals
método . Por ejemplo, la especificación del #containsKey(Object) containsKey(Object key)
método indica: "devuelve true
si y solo si este mapa contiene una asignación para una clave k
de tal forma que (key==null ? k==null : key.equals(k))
". Esta especificación no debe interpretarse para indicar que la invocación Map.containsKey
con un argumento key
que no sea NULL hará key.equals(k)
que se invoque para cualquier clave k
. Las implementaciones son gratuitas para implementar optimizaciones en las que se evita la equals
invocación, por ejemplo, comparando primero los códigos hash de las dos claves. (La Object#hashCode()
especificación garantiza que dos objetos con códigos hash distintos no pueden ser iguales). Por lo general, las implementaciones de las distintas interfaces del marco de colecciones son libres de aprovechar el comportamiento especificado de los métodos subyacentes Object
donde el implementador considere adecuado.
Algunas operaciones de asignación que realizan recorrido recursivo del mapa pueden producir un error con una excepción para las instancias autorreferenciales en las que el mapa se contiene directa o indirectamente. Esto incluye los clone()
métodos , equals()
hashCode()
y toString()
. Las implementaciones pueden controlar opcionalmente el escenario autorreferencial, pero la mayoría de las implementaciones actuales no lo hacen.
<h2>"unmodifiable">Unmodifiable Maps</h2>
Los Map#of() Map.of
métodos de fábrica estáticos , Map#ofEntries(Map.Entry...) Map.ofEntries
y Map#copyOf Map.copyOf
proporcionan una manera cómoda de crear mapas no modificables. Las Map
instancias creadas por estos métodos tienen las siguientes características:
<ul>li Son i no modificables</i>.><>< Las claves y los valores no se pueden agregar, quitar ni actualizar. Llamar a cualquier método mutador en el mapa siempre UnsupportedOperationException
hará que se produzca. Sin embargo, si las claves o los valores contenidos son mutables por sí mismos, esto puede hacer que el mapa se comporte incoherentemente o que su contenido parezca cambiar. <li>No permiten null
claves y valores. Los intentos de crearlos con null
claves o valores dan como NullPointerException
resultado . <li>Son serializables si todas las claves y valores son serializables. <li>rechazan las claves duplicadas en el momento de la creación. Las claves duplicadas que se pasan a un método de generador estático dan como IllegalArgumentException
resultado . <li>El orden de iteración de las asignaciones no está especificado y está sujeto a cambios. <li>Son basados en valores. Los programadores deben tratar las instancias que son #equals(Object) iguales que intercambiables y no deben usarlas para la sincronización o puede producirse un comportamiento impredecible. Por ejemplo, en una versión futura, es posible que se produzca un error en la sincronización. Los autores de las llamadas no deben realizar suposiciones sobre la identidad de las instancias devueltas. Las factorías son gratuitas para crear nuevas instancias o reutilizar las existentes. <li>Se serializan según se especifica en la página Formulario serializado . </ul>
Esta interfaz es miembro de Java Collections Framework.
Se agregó en la versión 1.2.
Documentación de Java para java.util.Map
.
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.
Propiedades
Handle |
Obtiene el valor JNI del objeto Android subyacente. (Heredado de IJavaObject) |
IsEmpty |
Devuelve si este mapa está vacío. |
JniIdentityHashCode |
Devuelve el valor de |
JniManagedPeerState |
Estado del mismo nivel administrado. (Heredado de IJavaPeerable) |
JniPeerMembers |
Compatibilidad con la invocación y el acceso de miembros. (Heredado de IJavaPeerable) |
PeerReference |
Devuelve una JniObjectReference de la instancia de objeto Java ajustada. (Heredado de IJavaPeerable) |
Métodos
Clear() |
Quita todas las asignaciones de este mapa (operación opcional). |
Compute(Object, IBiFunction) |
Intenta calcular una asignación para la clave especificada y su valor asignado actual (o |
ComputeIfAbsent(Object, IFunction) |
Si la clave especificada aún no está asociada a un valor (o se asigna a |
ComputeIfPresent(Object, IBiFunction) |
Si el valor de la clave especificada está presente y no es NULL, intenta calcular una nueva asignación dada la clave y su valor asignado actual. |
ContainsKey(Object) |
Devuelve |
ContainsValue(Object) |
Devuelve |
CopyOf(IDictionary) |
Devuelve un mapa no modificable que contiene las entradas del mapa especificado. |
Disposed() |
Se llama cuando se ha eliminado la instancia. (Heredado de IJavaPeerable) |
DisposeUnlessReferenced() |
Si no hay referencias pendientes a esta instancia, llama a |
Entry(Object, Object) |
Devuelve un inmutable |
EntrySet() |
Devuelve una |
Equals(Object) |
Compara el objeto especificado con este mapa para obtener igualdad. |
Finalized() |
Se llama cuando se ha finalizado la instancia. (Heredado de IJavaPeerable) |
ForEach(IBiConsumer) |
Realiza la acción especificada para cada entrada de este mapa hasta que se hayan procesado todas las entradas o la acción produzca una excepción. |
Get(Object) |
Devuelve el valor al que se asigna la clave especificada o |
GetHashCode() |
Devuelve el valor de código hash de esta asignación. |
GetOrDefault(Object, Object) |
Devuelve el valor al que se asigna la clave especificada o |
KeySet() |
Devuelve una |
Merge(Object, Object, IBiFunction) |
Si la clave especificada aún no está asociada a un valor o está asociada a null, la asocia al valor distinto de NULL especificado. |
Of() |
Devuelve un mapa no modificable que contiene cero asignaciones. |
Of(Object, Object) |
Devuelve un mapa no modificable que contiene una sola asignación. |
Of(Object, Object, Object, Object) |
Devuelve un mapa no modificable que contiene dos asignaciones. |
Of(Object, Object, Object, Object, Object, Object) |
Devuelve un mapa no modificable que contiene tres asignaciones. |
Of(Object, Object, Object, Object, Object, Object, Object, Object) |
Devuelve un mapa no modificable que contiene cuatro asignaciones. |
Of(Object, Object, Object, Object, Object, Object, Object, Object, Object, Object) |
Devuelve un mapa no modificable que contiene cinco asignaciones. |
Of(Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object) |
Devuelve un mapa no modificable que contiene seis asignaciones. |
Of(Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object) |
Devuelve un mapa no modificable que contiene siete asignaciones. |
Of(Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object) |
Devuelve un mapa no modificable que contiene ocho asignaciones. |
Of(Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object) |
Devuelve un mapa no modificable que contiene nueve asignaciones. |
Of(Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object) |
Devuelve un mapa no modificable que contiene diez asignaciones. |
OfEntries(IMapEntry[]) |
Devuelve un mapa inmutable que contiene claves y valores extraídos de las entradas especificadas. |
Put(Object, Object) |
Asocia el valor especificado a la clave especificada en esta asignación (operación opcional). |
PutAll(IDictionary) |
Copia todas las asignaciones del mapa especificado a esta asignación (operación opcional). |
PutIfAbsent(Object, Object) |
Si la clave especificada aún no está asociada a un valor (o se asigna a |
Remove(Object) |
Quita la asignación de una clave de este mapa si está presente (operación opcional). |
Remove(Object, Object) |
Quita la entrada de la clave especificada solo si está asignada actualmente al valor especificado. |
Replace(Object, Object) |
Reemplaza la entrada de la clave especificada solo si está asignada actualmente a algún valor. |
Replace(Object, Object, Object) |
Reemplaza la entrada de la clave especificada solo si está asignada actualmente al valor especificado. |
ReplaceAll(IBiFunction) |
Reemplaza el valor de cada entrada por el resultado de invocar la función especificada en esa entrada hasta que se hayan procesado todas las entradas o la función produzca una excepción. |
SetJniIdentityHashCode(Int32) |
Establezca el valor devuelto por |
SetJniManagedPeerState(JniManagedPeerStates) |
Objeto que asigna claves a valores. (Heredado de IJavaPeerable) |
SetPeerReference(JniObjectReference) |
Establezca el valor devuelto por |
Size() |
Devuelve el número de asignaciones de clave-valor en este mapa. |
UnregisterFromRuntime() |
Anule el registro de esta instancia para que el tiempo de ejecución no lo devuelva de invocaciones futuras Java.Interop.JniRuntime+JniValueManager.PeekValue . (Heredado de IJavaPeerable) |
Values() |
Devuelve una |
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) |
Objeto que asigna claves a valores. |
GetJniTypeName(IJavaPeerable) |
Objeto que asigna claves a valores. |