IMap Interfaccia
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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 raccolta, che consentono di visualizzare il contenuto di una mappa come un set di chiavi, una raccolta di valori o un 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, ad esempio la TreeMap
classe , fanno garanzie specifiche per il loro ordine; altre, come la HashMap
classe , non .
Nota: è necessario prestare molta attenzione se gli oggetti modificabili vengono usati 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 del relativo argomento. In effetti, quest'ultimo costruttore consente all'utente di copiare qualsiasi mappa, generando una mappa equivalente della classe desiderata. Non è possibile applicare questa raccomandazione (poiché le interfacce non possono contenere costruttori), ma tutte le implementazioni di mapping 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 avrà 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 per le 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. Se si tenta di inserire una chiave o un valore non idoneo, viene generata un'eccezione non selezionata, in genere NullPointerException
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ò semplicemente restituire false; alcune implementazioni mostreranno il comportamento precedente e alcune mostreranno quest'ultima. In generale, il tentativo di un'operazione su una chiave o un valore non idoneo il cui completamento non genera l'inserimento di un elemento non idoneo nella mappa può generare un'eccezione o può 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 implicare che la chiamata Map.containsKey
con un argomento key
non Null provocherà key.equals(k)
la chiamata a qualsiasi chiave k
. Le implementazioni sono libere di implementare ottimizzazioni in base alla 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. 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 potrebbero non riuscire con un'eccezione per le istanze autoferenziale in cui la mappa contiene direttamente o indirettamente. Sono inclusi i clone()
metodi , hashCode()
equals()
e toString()
. Le implementazioni possono facoltativamente gestire lo scenario autoferenziale, ma la maggior parte delle implementazioni correnti non lo fa.
<h2>"unmodifiable">Unmodifiable Maps</h2>
I Map#of() Map.of
metodi , Map#ofEntries(Map.Entry...) Map.ofEntries
e Map#copyOf Map.copyOf
static factory offrono un modo pratico per creare mappe non modificabili. Le Map
istanze create da questi metodi hanno le caratteristiche seguenti:
<ul>li Sono imodifiable</i>>.<>< Non è possibile aggiungere chiavi e valori, rimuovere o aggiornare. La chiamata di qualsiasi metodo mutator sulla mappa causerà UnsupportedOperationException
sempre la creazione di un metodo mutator. Tuttavia, se le chiavi o i valori contenuti sono se stessi modificabili, può causare il comportamento incoerente della mappa o il relativo contenuto. <li>Non consentono null
chiavi e valori. Tenta di crearli con null
chiavi o valori comportano 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 su valori. I programmatori devono considerare le istanze #equals(Object) uguali a quelli intercambiabili e non devono usarle per la sincronizzazione o il comportamento imprevedibile può verificarsi. Ad esempio, in una versione futura, la sincronizzazione potrebbe non riuscire. I chiamanti non devono prendere presupposti 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.
Aggiunto nella versione 1.2.
Documentazione Java per java.util.Map
.
Le parti di questa pagina sono modifiche in base al lavoro creato e condiviso dal Android Open Source e usato in base ai termini descritti nella .
Proprietà
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 |
JniManagedPeerState |
Stato del peer gestito. (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 Java di cui è stato eseguito il wrapping. (Ereditato da IJavaPeerable) |
Metodi
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 |
ComputeIfAbsent(Object, IFunction) |
Se la chiave specificata non è già associata a un valore (o è mappata a |
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 |
ContainsValue(Object) |
Restituisce |
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 |
Entry(Object, Object) |
Restituisce un valore non modificabile |
EntrySet() |
Restituisce una |
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 vengono elaborate o l'azione genera un'eccezione. |
Get(Object) |
Restituisce il valore a cui viene mappato la chiave specificata oppure |
GetHashCode() |
Restituisce il valore del codice hash per questa mappa. |
GetOrDefault(Object, Object) |
Restituisce il valore a cui viene mappato la chiave specificata oppure |
KeySet() |
Restituisce una |
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) |
Restituisce una mappa non modificabile contenente un singolo mapping. |
Of(Object, Object, Object, Object) |
Restituisce una mappa non modificabile contenente due mapping. |
Of(Object, Object, Object, Object, Object, Object) |
Restituisce una mappa non modificabile contenente tre 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, Object, Object, Object, Object) |
Restituisce una mappa non modificabile contenente cinque 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, 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, 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, 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, Object, Object, Object, Object) |
Restituisce una mappa non modificabile contenente dieci 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 |
Remove(Object) |
Rimuove il mapping per una chiave da questa mappa, se presente (operazione facoltativa). |
Remove(Object, Object) |
Rimuove la voce per la chiave specificata solo se è attualmente mappata al valore specificato. |
Replace(Object, Object) |
Sostituisce la voce per la chiave specificata solo se è attualmente mappata a un valore. |
Replace(Object, Object, Object) |
Sostituisce la voce per la chiave specificata solo se è attualmente mappato al valore specificato. |
ReplaceAll(IBiFunction) |
Sostituisce il valore di ogni voce con il risultato di richiamare la funzione specificata su tale voce fino a quando tutte le voci non vengono elaborate o la funzione genera un'eccezione. |
SetJniIdentityHashCode(Int32) |
Impostare il valore restituito da |
SetJniManagedPeerState(JniManagedPeerStates) |
Oggetto che esegue il mapping delle chiavi ai valori. (Ereditato da IJavaPeerable) |
SetPeerReference(JniObjectReference) |
Impostare il valore restituito da |
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 |
Metodi di estensione
JavaCast<TResult>(IJavaObject) |
Esegue una conversione del tipo verificato dal runtime Android. |
JavaCast<TResult>(IJavaObject) |
Oggetto che esegue il mapping delle chiavi ai valori. |
GetJniTypeName(IJavaPeerable) |
Oggetto che esegue il mapping delle chiavi ai valori. |