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 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.
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 |
| 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 |
| 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 sono state elaborate o l'azione genera un'eccezione. |
| Get(Object) |
Restituisce il valore a cui viene eseguito il mapping della chiave specificata oppure |
| 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 |
| 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, 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 |
| 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 |
| 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
| Nome | Descrizione |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Ottiene il nome JNI del tipo dell'istanza |
| JavaAs<TResult>(IJavaPeerable) |
Provare a digitare |
| 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 |