Karte Einführung
Kartieren Sie den Schlüssel zum Objekt des Wertes. Eine Karte kann keine doppelten Schlüssel enthalten. Jeder Schlüssel kann höchstens einem Wert zuordnen. Diese Schnittstelle ersetzt die Wörterbuchklasse, die vollständig eine abstrakte Klasse ist, keine Schnittstelle.
Die Kartenschnittstelle enthält drei Sammlungsansichten, mit denen der Inhalt einer Karte in Form eines Schlüsselsatzes, eines Wertsatzes oder eines Schlüsselwert-Zuordnungsbeziehungssatzes angezeigt wird. Die Zuordnungsreihenfolge ist definiert als die Reihenfolge, in der der Iterator seine Elemente in der Sammlungsansicht der Karte zurückgibt. Einige Mapping -Implementierungen garantieren ihre Bestellung explizit, wie die Treemap -Klasse; Andere garantieren ihre Bestellung nicht wie die Hashmap -Klasse.
HINWEIS: Bei der Verwendung veränderlicher Objekte als Zuordnungsschlüssel müssen zusätzliche Vorsicht geboten werden. Wenn ein Objekt ein Schlüssel in einer Karte ist, wird das Verhalten der Karte ungewiss sein, wenn der Wert des Objekts in einer Weise geändert wird, die den Gleichberechtigungsvergleich beeinflusst. Ein Sonderfall, der dies verbietet, ist, dass sich eine Karte nicht als Schlüssel einfügen lässt. Obwohl eine Karte sich selbst als Wert einbeziehen darf, seien Sie vorsichtig: Die Definition von Gleich- und Hashcode -Methoden ist auf solchen Karten nicht mehr explizit.
Alle gemeinsamen Mapping -Implementierungsklassen sollten zwei "Standard" -Konstruktoren bereitstellen: einen Hohlraum (kein Parameter) Konstruktor zum Erstellen leerer Karten; und ein Konstruktor mit einem einzelnen Kartentypparameter zum Erstellen einer neuen Karte mit derselben Schlüsselwert-Zuordnungsbeziehung wie der Parameter. Tatsächlich ermöglicht dem letzteren Konstruktor dem Benutzer, beliebige Karten zu kopieren, um eine äquivalente Karte der erforderlichen Klasse zu generieren. Obwohl dieser Vorschlag nicht erzwungen werden kann (da die Schnittstelle keine Konstruktoren enthalten kann), folgen alle gemeinsamen Zuordnungsimplementierungen im JDK ihr.
Die in dieser Schnittstelle enthaltenen "Zerstörer" -Methoden ändern die Zuordnung ihrer Operationen. Wenn diese Zuordnung den Vorgang nicht unterstützt, werfen diese Methoden eine nicht unterstützte Operationxzeption. In diesem Fall können diese Methoden (aber nicht benötigen) eine nicht unterstützte OperationException werfen, wenn der Anruf für die Zuordnung ungültig ist. Wenn beispielsweise eine nicht modifizierte Karte, deren Zuordnungsbeziehung "überlappend" ist, leer ist, kann eine Ausnahme beim Aufrufen der PUTall (MAP) -Methode auf die Karte geworfen (, aber nicht erforderlich).
Einige Mapping -Implementierungen haben Einschränkungen für die Schlüssel und Werte, die möglicherweise enthalten sein können. Zum Beispiel verbieten einige Implementierungen Nullschlüssel und Werte, andere Einschränkungen für den Typ ihrer Schlüssel. Der Versuch, einen uneingeschränkten Schlüssel oder Wert einzufügen, bringt eine nicht passende Ausnahme, normalerweise eine NullPointerexception oder classCastException. Der Versuch, zu befragen, ob ein uneingeschränkter Schlüssel oder Wert eine Ausnahme ausgelöst oder falsch zurückgegeben werden kann; Einige Implementierungen werden das frühere Verhalten aufweisen, während andere die letzteren aufweisen. Im Allgemeinen kann bei dem Versuch, einen Betrieb mit einem nicht qualifizierten Schlüssel oder Wert auszuführen, und der Abschluss des Vorgangs nicht dazu führt, dass ein nicht qualifiziertes Element in die Karte eingefügt wird, eine Ausnahme kann abhängig von der Implementierung selbst erfolgreich sein. Solche Ausnahmen sind in der Spezifikation dieser Schnittstelle als "optional" gekennzeichnet.
Diese Schnittstelle ist Mitglied des Java -Sammlungs -Frameworks.
Viele Methoden in der Collections Framework -Schnittstelle werden gemäß der Equals -Methode definiert. Zum Beispiel heißt es in der Spezifikation der Methode der entsprechenden (Objektschlüssel): "RECHT TRUE, wenn diese Karte eine Zuordnungsbeziehung für Schlüssel k enthält, die erfüllt (Key == NULL? K == NULL: Schlüssel.Equals (k)). Diese Spezifikation sollte nicht interpretiert werden. Gleich.
Häufige Betriebsanweisungen void klar ()
Entfernen Sie alle Zuordnungsbeziehungen von dieser Karte (optionale Aktion).
boolean enthälty (Objektschlüssel)
Gibt true zurück, wenn diese Karte eine Zuordnungsbeziehung für den angegebenen Schlüssel enthält.
boolean enthält den Wert (Objektwert)
Gibt true zurück, wenn diese Karte einen oder mehrere Schlüssel zum angegebenen Wert abbildert.
Setzen Sie <map.Entry <k, v >> Einstieg ())
Gibt die festgelegte Ansicht der in dieser Karte enthaltenen Zuordnungsbeziehungen zurück.
boolesche gleich (Objekt O)
Vergleichen Sie, ob das angegebene Objekt dieser Karte gleich ist.
V GET (Objektschlüssel)
Gibt den von dem angegebenen Schlüssel zugeordneten Wert zurück; Wenn diese Karte nicht die Zuordnungsbeziehung des Schlüssels enthält, geben Sie NULL zurück.
int Hashcode ()
Gibt den Hash -Code -Wert für diese Karte zurück.
boolean isempty ()
Geben Sie True zurück, wenn diese Karte keine Schlüssel-Wert-Mapping-Beziehung enthält.
Setzen Sie <k> keyset ()
Gibt die festgelegte Ansicht der in dieser Karte enthaltenen Schlüssel zurück.
V put (k key, v Wert)
Verbinden Sie den angegebenen Wert mit dem angegebenen Schlüssel in dieser Karte (optionale Aktion).
void putall (map <? Erweitert K, erweitert V> m)
Kopieren Sie alle Zuordnungsbeziehungen aus der angegebenen Zuordnung in diese Karte (optionale Aktion).
V entfernen (Objekttaste)
Wenn es eine Zuordnungsbeziehung für einen Schlüssel gibt, wird sie von dieser Karte entfernt (optional).
int size ()
Gibt die Kennzeichnungsbeziehung in dieser Karte zurück.
Sammlung <V> values ()
Gibt die Sammelansicht der in dieser Karte enthaltenen Werte zurück.
Allgemeine Verwendung der Karte
1. deklarieren Sie eine Karte:
Die Codekopie lautet wie folgt:
Map map = new HashMap ();
2. Geben Sie den Wert in die Karte. Hinweis: Die Karte wird in Form von Schlüsselwert gespeichert, wie z. B.:
Die Codekopie lautet wie folgt:
map.put ("sa", "dd");
3. Nehmen Sie den Wert von der Karte:
Die Codekopie lautet wie folgt:
String str = map.get ("sa"). Toststring,
Das Ergebnis ist: str = "dd '
4. Iterieren Sie eine Karte und holen Sie sich den Schlüssel und den Wert daraus:
Die Codekopie lautet wie folgt:
Karte m = neuer Hashmap ();
für (Objekt obj: map.keyset ()) {
Object value = map.get (obj);
}