IMap Schnittstelle
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ein Objekt, das Schlüssel zu Werten zuordnet.
[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
- Abgeleitet
- Attribute
- Implementiert
Hinweise
Ein Objekt, das Schlüssel zu Werten zuordnet. Eine Karte darf keine doppelten Schlüssel enthalten; jeder Schlüssel kann höchstens einem Wert zugeordnet werden.
Diese Schnittstelle findet statt der Dictionary Klasse statt einer Schnittstelle statt einer Schnittstelle statt einer völlig abstrakten Klasse statt statt der Klasse statt.
Die Map Schnittstelle stellt drei Sammlungsansichten bereit, mit denen der Inhalt einer Karte als Eine Reihe von Schlüsseln, Sammlung von Werten oder Satz von Schlüsselwertzuordnungen angezeigt werden kann. Die Reihenfolge einer Karte wird als Die Reihenfolge definiert, in der die Iteratoren in den Auflistungsansichten der Karte ihre Elemente zurückgeben. Einige Kartenimplementierungen, z. B. die TreeMap Klasse, stellen spezifische Garantien für ihre Begegnungsreihenfolge dar; andere, wie die HashMap Klasse, nicht. Karten mit einer definierten Begegnungsreihenfolge sind im Allgemeinen Untertypen der SequencedMap Schnittstelle.
Hinweis: Große Sorgfalt muss ausgeübt werden, wenn veränderbare Objekte als Kartenschlüssel verwendet werden. Das Verhalten einer Karte wird nicht angegeben, wenn der Wert eines Objekts auf eine Weise geändert wird, die sich auf Vergleiche auswirkt equals , während das Objekt ein Schlüssel in der Karte ist. Ein Sonderfall dieses Verbots besteht darin, dass eine Karte nicht als Schlüssel zulässig ist. Obwohl es zulässig ist, dass eine Karte sich selbst als Wert enthält, wird äußerste Vorsicht empfohlen: Die equals Methoden hashCode sind auf einer solchen Karte nicht mehr gut definiert.
Alle allgemeinen Zuordnungsimplementierungsklassen sollten zwei "Standard"-Konstruktoren bereitstellen: einen void -Konstruktor (keine Argumente), der eine leere Zuordnung erstellt, und ein Konstruktor mit einem einzigen Argument vom Typ Map, wodurch eine neue Zuordnung mit denselben Schlüsselwertzuordnungen wie das Argument erstellt wird. Der letztere Konstruktor ermöglicht es dem Benutzer, eine beliebige Karte zu kopieren und eine entsprechende Zuordnung der gewünschten Klasse zu erzeugen. Es gibt keine Möglichkeit, diese Empfehlung zu erzwingen (da Schnittstellen keine Konstruktoren enthalten können), aber alle allgemeinen Zuordnungsimplementierungen im JDK entsprechen.
Die in dieser Schnittstelle enthaltenen "destruktiven" Methoden, d. h. die Methoden, die die Karte ändern, auf der sie ausgeführt werden, werden angegeben, um auszuwerfen UnsupportedOperationException , wenn diese Karte den Vorgang nicht unterstützt. Wenn dies der Fall ist, können diese Methoden, aber nicht erforderlich, einen UnsupportedOperationException Auslösen auslösen, wenn der Aufruf keine Auswirkungen auf die Karte hätte. Das Aufrufen der #putAll(Map) Methode auf einer nicht modifizierbaren Karte kann z. B. die Ausnahme auslösen, wenn die Karte, deren Zuordnungen "überlagert" sein sollen, leer ist.
Einige Kartenimplementierungen haben Einschränkungen für die Schlüssel und Werte, die sie enthalten können. Einige Implementierungen verbieten z. B. NULL-Schlüssel und -Werte, und einige haben Einschränkungen für die Typen ihrer Schlüssel. Beim Versuch, einen nicht förderbaren Schlüssel oder Wert einzufügen, wird eine nicht aktivierte Ausnahme ausgelöst, in der Regel NullPointerException oder ClassCastException. Wenn Sie versuchen, das Vorhandensein eines nicht zulässigen Schlüssels oder Werts abzufragen, wird möglicherweise eine Ausnahme ausgelöst, oder sie gibt einfach "false" zurück. einige Implementierungen zeigen das frühere Verhalten und einige zeigen letztere. Im Allgemeinen kann der Versuch eines Vorgangs für einen nicht zulässigen Schlüssel oder Wert, dessen Abschluss nicht dazu führen würde, dass ein nicht berechtigtes Element in die Karte eingefügt wird, eine Ausnahme auslösen, oder es kann erfolgreich sein, wenn die Implementierung möglich ist. Solche Ausnahmen werden in der Spezifikation für diese Schnittstelle als "optional" gekennzeichnet.
Viele Methoden in Collections Framework-Schnittstellen werden in Bezug auf die Object#equals(Object) equals Methode definiert. Die Spezifikation für die #containsKey(Object) containsKey(Object key) Methode lautet beispielsweise: "Gibt nur dann zurück true , wenn diese Karte eine Zuordnung für einen Schlüssel k enthält, (key==null ? k==null : key.equals(k))sodass " Diese Spezifikation sollte nicht so ausgelegt werden, dass das Aufrufen Map.containsKey mit einem Argument ungleich Null key für einen Schlüssel kaufgerufen wirdkey.equals(k). Implementierungen sind frei, Optimierungen zu implementieren, bei denen der equals Aufruf vermieden wird, z. B. indem zuerst die Hashcodes der beiden Schlüssel verglichen werden. (Die Object#hashCode() Spezifikation garantiert, dass zwei Objekte mit ungleichen Hashcodes nicht gleich sein können.) Im Allgemeinen sind Implementierungen der verschiedenen Collections Framework-Schnittstellen frei, um das angegebene Verhalten zugrunde Object liegender Methoden zu nutzen, unabhängig davon, wo der Implementor sie als angemessen erachtet.
Einige Zuordnungsvorgänge, die rekursive Durchquerungen der Karte ausführen, können mit einer Ausnahme für selbstreferentielle Instanzen fehlschlagen, in denen sich die Zuordnung direkt oder indirekt selbst enthält. Dies schließt die clone()Methoden hashCode()equals()und Methoden toString() ein. Implementierungen können optional das selbstreferentielle Szenario behandeln, die meisten aktuellen Implementierungen tun dies jedoch nicht.
<h2>"unmodifiable">Unmodifiable Maps</h2>
Die Map#of() Map.ofMethoden , Map#ofEntries(Map.Entry...) Map.ofEntriesund Map#copyOf Map.copyOf statische Factory bieten eine bequeme Möglichkeit zum Erstellen unveränderlicher Karten. Die Map von diesen Methoden erstellten Instanzen weisen die folgenden Merkmale auf:
<ul><li>Sie sind <i>unmodififiable</i>. Schlüssel und Werte können nicht hinzugefügt, entfernt oder aktualisiert werden. Das Aufrufen einer Mutatormethode auf der Karte führt UnsupportedOperationException immer dazu, dass sie ausgelöst wird. Wenn jedoch die enthaltenen Schlüssel oder Werte selbst änderbar sind, kann dies dazu führen, dass sich die Karte inkonsistent verhält oder der Inhalt sich ändert.
<li>Sie verbieten null Schlüssel und Werte. Versuche, sie mit null Schlüsseln oder Werten zu erstellen, führen zu NullPointerException.
<li>Sie sind serialisierbar, wenn alle Schlüssel und Werte serialisierbar sind.
<li>Sie lehnen doppelte Schlüssel zur Erstellungszeit ab. Doppelte Schlüssel, die an eine statische Factorymethode übergeben werden, führen zu IllegalArgumentException.
<li>Die Iterationsreihenfolge von Zuordnungen ist nicht angegeben und kann geändert werden.
<li>Sie sind wertbasiert. Programmierer sollten Instanzen behandeln, die #equals(Object) gleich austauschbar sind und diese nicht für die Synchronisierung verwenden sollten, oder unvorhersehbares Verhalten auftreten kann. In einer zukünftigen Version kann die Synchronisierung z. B. fehlschlagen. Aufrufer sollten keine Annahmen über die Identität der zurückgegebenen Instanzen treffen. Fabriken können neue Instanzen erstellen oder vorhandene wiederverwenden.
<li>Sie werden wie auf der Serialisierten Formularseite serialisiert .
</ul>
Diese Schnittstelle ist ein Mitglied des Java Collections Framework.
In 1.2 hinzugefügt.
Java Dokumentation für java.util.Map.
Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden.
Eigenschaften
| Name | Beschreibung |
|---|---|
| Handle |
Ruft den JNI-Wert des zugrunde liegenden Android-Objekts ab. (Geerbt von IJavaObject) |
| IsEmpty |
Gibt zurück, ob diese Karte leer ist. |
| JniIdentityHashCode |
Gibt den Wert |
| JniManagedPeerState |
Status des verwalteten Peers. (Geerbt von IJavaPeerable) |
| JniObjectReferenceControlBlock |
Ein Objekt, das Schlüssel zu Werten zuordnet. (Geerbt von IJavaPeerable) |
| JniPeerMembers |
Mitgliedszugriff und Aufrufunterstützung. (Geerbt von IJavaPeerable) |
| PeerReference |
Gibt eine JniObjectReference der umbrochenen Java Objektinstanz zurück. (Geerbt von IJavaPeerable) |
Methoden
| Name | Beschreibung |
|---|---|
| Clear() |
Entfernt alle Zuordnungen aus dieser Karte (optionaler Vorgang). |
| Compute(Object, IBiFunction) |
Versucht, eine Zuordnung für den angegebenen Schlüssel und den aktuellen zugeordneten Wert (oder |
| ComputeIfAbsent(Object, IFunction) |
Wenn der angegebene Schlüssel noch nicht einem Wert zugeordnet ist (oder diesem zugeordnet |
| ComputeIfPresent(Object, IBiFunction) |
Wenn der Wert für den angegebenen Schlüssel vorhanden und nicht null ist, wird versucht, eine neue Zuordnung anhand des Schlüssels und des aktuellen zugeordneten Werts zu berechnen. |
| ContainsKey(Object) |
Gibt zurück |
| ContainsValue(Object) |
Gibt zurück |
| CopyOf(IDictionary) |
Gibt eine nicht veränderbare Karte zurück, die die Einträge der angegebenen Karte enthält. |
| Disposed() |
Wird aufgerufen, wenn die Instanz verworfen wurde. (Geerbt von IJavaPeerable) |
| DisposeUnlessReferenced() |
Wenn keine offenen Verweise auf diese Instanz vorhanden sind, wird nichts aufgerufen |
| Entry(Object, Object) |
Gibt eine unveränderliche Funktion |
| EntrySet() |
Gibt eine |
| Equals(Object) |
Vergleicht das angegebene Objekt mit dieser Zuordnung für die Gleichheit. |
| Finalized() |
Wird aufgerufen, wenn die Instanz abgeschlossen wurde. (Geerbt von IJavaPeerable) |
| ForEach(IBiConsumer) |
Führt die angegebene Aktion für jeden Eintrag in dieser Zuordnung aus, bis alle Einträge verarbeitet wurden oder die Aktion eine Ausnahme auslöst. |
| Get(Object) |
Gibt den Wert zurück, dem der angegebene Schlüssel zugeordnet wird oder |
| GetHashCode() |
Gibt den Hashcodewert für diese Zuordnung zurück. |
| GetOrDefault(Object, Object) |
Gibt den Wert zurück, dem der angegebene Schlüssel zugeordnet wird oder |
| KeySet() |
Gibt eine |
| Merge(Object, Object, IBiFunction) |
Wenn der angegebene Schlüssel noch nicht einem Wert zugeordnet ist oder null zugeordnet ist, ordnet er dem angegebenen Wert ungleich Null zu. |
| Of() |
Gibt eine nicht veränderbare Karte zurück, die Nullzuordnungen enthält. |
| Of(Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object) |
Gibt eine nicht modifizierbare Karte zurück, die zehn Zuordnungen enthält. |
| Of(Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object) |
Gibt eine nicht veränderbare Karte zurück, die neun Zuordnungen enthält. |
| Of(Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object) |
Gibt eine nicht veränderbare Karte zurück, die acht Zuordnungen enthält. |
| Of(Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object) |
Gibt eine nicht veränderbare Karte zurück, die sieben Zuordnungen enthält. |
| Of(Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object) |
Gibt eine nicht modifizierbare Karte zurück, die sechs Zuordnungen enthält. |
| Of(Object, Object, Object, Object, Object, Object, Object, Object, Object, Object) |
Gibt eine nicht veränderbare Karte zurück, die fünf Zuordnungen enthält. |
| Of(Object, Object, Object, Object, Object, Object, Object, Object) |
Gibt eine nicht veränderbare Karte zurück, die vier Zuordnungen enthält. |
| Of(Object, Object, Object, Object, Object, Object) |
Gibt eine nicht modifizierbare Karte zurück, die drei Zuordnungen enthält. |
| Of(Object, Object, Object, Object) |
Gibt eine nicht modifizierbare Karte zurück, die zwei Zuordnungen enthält. |
| Of(Object, Object) |
Gibt eine nicht modifizierbare Karte zurück, die eine einzelne Zuordnung enthält. |
| OfEntries(IMapEntry[]) |
Gibt eine unveränderliche Zuordnung zurück, die Schlüssel und Werte enthält, die aus den angegebenen Einträgen extrahiert wurden. |
| Put(Object, Object) |
Ordnet den angegebenen Wert dem angegebenen Schlüssel in dieser Karte zu (optionaler Vorgang). |
| PutAll(IDictionary) |
Kopiert alle Zuordnungen aus der angegebenen Zuordnung in diese Karte (optionaler Vorgang). |
| PutIfAbsent(Object, Object) |
Wenn der angegebene Schlüssel noch nicht einem Wert zugeordnet ist (oder diesem zugeordnet ist), wird er dem angegebenen Wert zugeordnet |
| Remove(Object, Object) |
Entfernt den Eintrag für den angegebenen Schlüssel nur, wenn er derzeit dem angegebenen Wert zugeordnet ist. |
| Remove(Object) |
Entfernt die Zuordnung für einen Schlüssel aus dieser Karte, wenn er vorhanden ist (optionaler Vorgang). |
| Replace(Object, Object, Object) |
Ersetzt den Eintrag für den angegebenen Schlüssel nur, wenn er derzeit dem angegebenen Wert zugeordnet ist. |
| Replace(Object, Object) |
Ersetzt den Eintrag für den angegebenen Schlüssel nur, wenn er derzeit einem Bestimmten Wert zugeordnet ist. |
| ReplaceAll(IBiFunction) |
Ersetzt den Wert jedes Eintrags durch das Ergebnis, dass die angegebene Funktion für diesen Eintrag aufgerufen wird, bis alle Einträge verarbeitet wurden oder die Funktion eine Ausnahme auslöst. |
| SetJniIdentityHashCode(Int32) |
Legen Sie den von |
| SetJniManagedPeerState(JniManagedPeerStates) |
Ein Objekt, das Schlüssel zu Werten zuordnet. (Geerbt von IJavaPeerable) |
| SetPeerReference(JniObjectReference) |
Legen Sie den von |
| Size() |
Gibt die Anzahl der Schlüsselwertzuordnungen in dieser Karte zurück. |
| UnregisterFromRuntime() |
Heben Sie die Registrierung dieser Instanz auf, damit die Laufzeit sie nicht aus zukünftigen Java.Interop.JniRuntime+JniValueManager.PeekValue Aufrufen zurückgibt. (Geerbt von IJavaPeerable) |
| Values() |
Gibt eine |
Erweiterungsmethoden
| Name | Beschreibung |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Ruft den JNI-Namen des Typs der Instanz |
| JavaAs<TResult>(IJavaPeerable) |
Versuchen Sie, die Eingabe |
| JavaCast<TResult>(IJavaObject) |
Führt eine android-laufzeitgecheckte Typkonvertierung aus. |
| JavaCast<TResult>(IJavaObject) |
Ein Objekt, das Schlüssel zu Werten zuordnet. |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Versuchen Sie, die Eingabe |