Linguaggio

IMap Interfaccia

Definizione

Oggetto che esegue il mapping delle chiavi ai valori.

[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
Derivato
Attributi
Implementazioni

Commenti

Oggetto che esegue il mapping delle chiavi ai valori. Una mappa non può contenere chiavi duplicate; ogni chiave può eseguire il mapping al massimo di un valore.

Questa interfaccia ha il posto della Dictionary classe , che era una classe totalmente astratta anziché un'interfaccia.

L'interfaccia Map fornisce tre visualizzazioni di raccolta, che consentono di visualizzare il contenuto di una mappa come set di chiavi, raccolta di valori o set di mapping chiave-valore. L'ordine di una mappa viene definito come l'ordine in cui gli iteratori nelle visualizzazioni della raccolta della mappa restituiscono i relativi elementi. Alcune implementazioni della mappa, come la TreeMap classe , fanno garanzie specifiche per il loro ordine di incontro; altre, come la HashMap classe , non lo fanno. Le mappe con un ordine di incontro definito sono in genere sottotipi dell'interfaccia SequencedMap .

Nota: è necessario prestare molta attenzione se gli oggetti modificabili vengono utilizzati come chiavi della mappa. Il comportamento di una mappa non viene specificato se il valore di un oggetto viene modificato in modo che influisca sui equals confronti mentre l'oggetto è una chiave nella mappa. Un caso particolare di questo divieto è che non è consentito che una mappa contenga se stessa come chiave. Sebbene sia consentito che una mappa contenga se stessa come valore, è consigliabile prestare estrema cautela: i equals metodi e hashCode non sono più ben definiti su tale mappa.

Tutte le classi di implementazione della mappa per utilizzo generico devono fornire due costruttori "standard": un costruttore void (nessun argomento) che crea una mappa vuota e un costruttore con un singolo argomento di tipo Map, che crea una nuova mappa con gli stessi mapping chiave-valore dell'argomento. In effetti, quest'ultimo costruttore consente all'utente di copiare qualsiasi mappa, producendo una mappa equivalente della classe desiderata. Non è possibile applicare questa raccomandazione (poiché le interfacce non possono contenere costruttori), ma tutte le implementazioni della mappa per utilizzo generico nel JDK sono conformi.

I metodi "distruttivi" contenuti in questa interfaccia, ovvero i metodi che modificano la mappa su cui operano, vengono specificati per generare UnsupportedOperationException se questa mappa non supporta l'operazione. In questo caso, questi metodi possono, ma non sono necessari, generare un'eccezione UnsupportedOperationException se la chiamata non avrebbe alcun effetto sulla mappa. Ad esempio, richiamare il #putAll(Map) metodo su una mappa non modificabile, ma non è necessario, generare l'eccezione se la mappa i cui mapping devono essere "sovrapposti" è vuota.

Alcune implementazioni della mappa hanno restrizioni sulle chiavi e i valori che possono contenere. Ad esempio, alcune implementazioni impediscono chiavi e valori Null e alcune hanno restrizioni sui tipi delle relative chiavi. Il tentativo di inserire una chiave o un valore non idoneo genera un'eccezione deselezionata, in NullPointerException genere o ClassCastException. Il tentativo di eseguire una query sulla presenza di una chiave o di un valore non idoneo può generare un'eccezione oppure può restituire semplicemente false; alcune implementazioni mostreranno il comportamento precedente e alcune mostreranno quest'ultima. In genere, il tentativo di un'operazione su una chiave o un valore non idoneo il cui completamento non comporta l'inserimento di un elemento non idoneo nella mappa può generare un'eccezione o potrebbe avere esito positivo, all'opzione dell'implementazione. Tali eccezioni vengono contrassegnate come "facoltative" nella specifica per questa interfaccia.

Molti metodi nelle interfacce di Collections Framework sono definiti in termini di Object#equals(Object) equals metodo. Ad esempio, la specifica per il #containsKey(Object) containsKey(Object key) metodo indica: "restituisce true se e solo se questa mappa contiene un mapping per una chiave k in modo che (key==null ? k==null : key.equals(k))". Questa specifica non deve essere interpretata per indicare che richiamare Map.containsKey con un argomento key non Null verrà key.equals(k) richiamato per qualsiasi chiave k. Le implementazioni sono libere di implementare ottimizzazioni in base al quale la equals chiamata viene evitata, ad esempio confrontando prima i codici hash delle due chiavi. La Object#hashCode() specifica garantisce che due oggetti con codici hash diversi non possano essere uguali. Più in generale, le implementazioni delle varie interfacce di Collections Framework sono libere di sfruttare il comportamento specificato dei metodi sottostanti Object ovunque l'implementatore lo consideri appropriato.

Alcune operazioni di mapping che eseguono attraversamento ricorsivo della mappa possono non riuscire con un'eccezione per le istanze auto-referenziale in cui la mappa contiene direttamente o indirettamente. Sono inclusi i clone()metodi , hashCode()equals()e toString() . Le implementazioni possono facoltativamente gestire lo scenario auto-referenziale, ma le implementazioni più correnti non lo fanno.

<h2>"unmodifiable">Unmodifiable Maps</h2>

I Map#of() Map.ofmetodi di factory statici , Map#ofEntries(Map.Entry...) Map.ofEntriese Map#copyOf Map.copyOf offrono un modo pratico per creare mappe non modificabili. Le Map istanze create da questi metodi presentano le caratteristiche seguenti:

<ul>li Sono imodificabile<>/i>.<>< Non è possibile aggiungere, rimuovere o aggiornare chiavi e valori. La chiamata di qualsiasi metodo mutatore sulla mappa causerà UnsupportedOperationException sempre la creazione di un'eccezione. Tuttavia, se le chiavi o i valori contenuti sono modificabili, è possibile che la mappa si comporti in modo incoerente o che il relativo contenuto venga modificato. <li>Non consentono null chiavi e valori. I tentativi di crearli con null chiavi o valori generano NullPointerException. <li>Sono serializzabili se tutte le chiavi e i valori sono serializzabili. <li>Rifiutano chiavi duplicate in fase di creazione. Le chiavi duplicate passate a un metodo factory statico generano IllegalArgumentException. <li>L'ordine di iterazione dei mapping non è specificato ed è soggetto a modifiche. <li>Sono basati sul valore. I programmatori devono considerare le istanze che sono #equals(Object) uguali a intercambiabili e non devono usarle per la sincronizzazione o possono verificarsi comportamenti imprevedibili. Ad esempio, in una versione futura, la sincronizzazione potrebbe non riuscire. I chiamanti non devono fare ipotesi sull'identità delle istanze restituite. Le factory sono gratuite per creare nuove istanze o riutilizzare quelle esistenti. <li>Vengono serializzati come specificato nella pagina Modulo serializzato . </ul>

Questa interfaccia è un membro di Java Collections Framework.

Aggiunta nella versione 1.2.

per java.util.Map.

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dalla e usati in base ai termini descritti in Creative License 2.5 Attribution License.

Proprietà

Nome Descrizione
Handle

Ottiene il valore JNI dell'oggetto Android sottostante.

(Ereditato da IJavaObject)
IsEmpty

Restituisce un valore che indica se la mappa è vuota.

JniIdentityHashCode

Restituisce il valore di java.lang.System.identityHashCode() per l'istanza di cui è stato eseguito il wrapping.

(Ereditato da IJavaPeerable)
JniManagedPeerState

Stato del peer gestito.

(Ereditato da IJavaPeerable)
JniObjectReferenceControlBlock

Oggetto che esegue il mapping delle chiavi ai valori.

(Ereditato da IJavaPeerable)
JniPeerMembers

Supporto per l'accesso ai membri e la chiamata.

(Ereditato da IJavaPeerable)
PeerReference

Restituisce un JniObjectReference oggetto dell'istanza dell'oggetto di cui è stato eseguito il wrapping Java.

(Ereditato da IJavaPeerable)

Metodi

Nome Descrizione
Clear()

Rimuove tutti i mapping da questa mappa (operazione facoltativa).

Compute(Object, IBiFunction)

Tenta di calcolare un mapping per la chiave specificata e il relativo valore mappato corrente (o null se non è presente alcun mapping corrente).

ComputeIfAbsent(Object, IFunction)

Se la chiave specificata non è già associata a un valore (o è mappata a null), tenta di calcolare il valore usando la funzione di mapping specificata e la immette in questa mappa, a meno che null.

ComputeIfPresent(Object, IBiFunction)

Se il valore per la chiave specificata è presente e non Null, tenta di calcolare un nuovo mapping in base alla chiave e al relativo valore mappato corrente.

ContainsKey(Object)

Restituisce true se la mappa contiene un mapping per la chiave specificata.

ContainsValue(Object)

Restituisce true se la mappa esegue il mapping di una o più chiavi al valore specificato.

CopyOf(IDictionary)

Restituisce una mappa non modificabile contenente le voci della mappa specificata.

Disposed()

Chiamato quando l'istanza è stata eliminata.

(Ereditato da IJavaPeerable)
DisposeUnlessReferenced()

Se non sono presenti riferimenti in sospeso a questa istanza, chiama Dispose(); in caso contrario, non esegue alcuna operazione.

(Ereditato da IJavaPeerable)
Entry(Object, Object)

Restituisce un valore non modificabile Entry contenente la chiave e il valore specificati.

EntrySet()

Restituisce una Set visualizzazione dei mapping contenuti in questa mappa.

Equals(Object)

Confronta l'oggetto specificato con questa mappa per verificarne l'uguaglianza.

Finalized()

Chiamato quando l'istanza è stata finalizzata.

(Ereditato da IJavaPeerable)
ForEach(IBiConsumer)

Esegue l'azione specificata per ogni voce della mappa fino a quando tutte le voci non sono state elaborate o l'azione genera un'eccezione.

Get(Object)

Restituisce il valore a cui viene eseguito il mapping della chiave specificata oppure null se la mappa non contiene alcun mapping per la chiave.

GetHashCode()

Restituisce il valore del codice hash per questa mappa.

GetOrDefault(Object, Object)

Restituisce il valore a cui viene eseguito il mapping della chiave specificata oppure defaultValue se la mappa non contiene alcun mapping per la chiave.

KeySet()

Restituisce una Set visualizzazione delle chiavi contenute in questa mappa.

Merge(Object, Object, IBiFunction)

Se la chiave specificata non è già associata a un valore o è associata a Null, la associa al valore non Null specificato.

Of()

Restituisce una mappa non modificabile contenente mapping zero.

Of(Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object)

Restituisce una mappa non modificabile contenente dieci mapping.

Of(Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object)

Restituisce una mappa non modificabile contenente nove mapping.

Of(Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object)

Restituisce una mappa non modificabile contenente otto mapping.

Of(Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object)

Restituisce una mappa non modificabile contenente sette mapping.

Of(Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object)

Restituisce una mappa non modificabile contenente sei mapping.

Of(Object, Object, Object, Object, Object, Object, Object, Object, Object, Object)

Restituisce una mappa non modificabile contenente cinque mapping.

Of(Object, Object, Object, Object, Object, Object, Object, Object)

Restituisce una mappa non modificabile contenente quattro mapping.

Of(Object, Object, Object, Object, Object, Object)

Restituisce una mappa non modificabile contenente tre mapping.

Of(Object, Object, Object, Object)

Restituisce una mappa non modificabile contenente due mapping.

Of(Object, Object)

Restituisce una mappa non modificabile contenente un singolo mapping.

OfEntries(IMapEntry[])

Restituisce una mappa non modificabile contenente chiavi e valori estratti dalle voci indicate.

Put(Object, Object)

Associa il valore specificato alla chiave specificata in questa mappa (operazione facoltativa).

PutAll(IDictionary)

Copia tutti i mapping dalla mappa specificata a questa mappa (operazione facoltativa).

PutIfAbsent(Object, Object)

Se la chiave specificata non è già associata a un valore (o è mappata a ) la associa al nullvalore specificato e restituisce null, altrimenti restituisce il valore corrente.

Remove(Object, Object)

Rimuove la voce per la chiave specificata solo se è attualmente mappata al valore specificato.

Remove(Object)

Rimuove il mapping per una chiave da questa mappa, se presente (operazione facoltativa).

Replace(Object, Object, Object)

Sostituisce la voce per la chiave specificata solo se è attualmente mappato al valore specificato.

Replace(Object, Object)

Sostituisce la voce per la chiave specificata solo se è attualmente mappata a un valore.

ReplaceAll(IBiFunction)

Sostituisce il valore di ogni voce con il risultato di richiamare la funzione specificata su tale voce fino a quando non vengono elaborate tutte le voci o la funzione genera un'eccezione.

SetJniIdentityHashCode(Int32)

Impostare il valore restituito da JniIdentityHashCode.

(Ereditato da IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

Oggetto che esegue il mapping delle chiavi ai valori.

(Ereditato da IJavaPeerable)
SetPeerReference(JniObjectReference)

Impostare il valore restituito da PeerReference.

(Ereditato da IJavaPeerable)
Size()

Restituisce il numero di mapping chiave-valore in questa mappa.

UnregisterFromRuntime()

Annullare la registrazione di questa istanza in modo che il runtime non lo restituisca dalle chiamate future Java.Interop.JniRuntime+JniValueManager.PeekValue .

(Ereditato da IJavaPeerable)
Values()

Restituisce una Collection visualizzazione dei valori contenuti in questa mappa.

Metodi di estensione

Nome Descrizione
GetJniTypeName(IJavaPeerable)

Ottiene il nome JNI del tipo dell'istanza selfdi .

JavaAs<TResult>(IJavaPeerable)

Provare a digitare selfTResult, verificando che la coercizione sia valida sul lato Java.

JavaCast<TResult>(IJavaObject)

Esegue una conversione del tipo di tipo controllato dal runtime Android.

JavaCast<TResult>(IJavaObject)

Oggetto che esegue il mapping delle chiavi ai valori.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Provare a digitare selfTResult, verificando che la coercizione sia valida sul lato Java.

Si applica a