Im Allgemeinen ist eine Karte eine Datenstruktur, die aus Schlüsselwertpaaren besteht, und jeder Schlüssel ist im Satz eindeutig. Verwenden wir K und V, um Schlüssel und Werte darzustellen, um die neun Hauptprobleme über die Karte in Java zu veranschaulichen.
0. MAP in Listentyp konvertieren
In Java bietet die MAP-Schnittstelle drei Möglichkeiten, Sammlungen zu erhalten: Schlüsselsatz, Wertsatz und Schlüsselwertset. Sie können alle in Listentyp nach Konstruktor oder Addall () -Methode konvertiert werden. Der folgende Code zeigt, wie Sie eine ArrayList aus einer Karte erstellen:
// Schlüssellistenliste KeyList = new ArrayList (map.keyset ()); // Value Listlist Valuelist = New ArrayList (map.valueset ()); // Key-Value Listlist Eintraglist = new ArrayList (map.entryset ());
1. Durchqueren Sie die Karte durch Eintrag
Auf diese Weise existiert in Java als Schlüsselwertpaare MAP.Entry. MAP.EntrySet () gibt eine Schlüsselwertsammlung zurück, die eine sehr effiziente Möglichkeit zum Überqueren ist.
für (Eintrageintrag: map.entrySet ()) {// Keyk key = Eintragung (); // ValueV Value = Eintrag.getValue ();};}; Iterator wird auch häufig verwendet, insbesondere vor JDK1.5
Iterator itr = map.EntrySet (). Iterator (); while (itr.hasnext ()) {Eintragseintrag = itr.next (); // Get keyk key = Eintrag.getkey (); // valueV value = Eintrag.getValue ();} 2. Sortieren Sie die Karte nach Schlüssel
Sortieren erfordert häufige Operationen auf MAPs KE. Eine Möglichkeit besteht darin, es über einen Komparator zu implementieren:
Listlist = new ArrayList (map.EntrySet ()); Collections.sort (Liste, neuer Vergleicher () {@Overridepublic int Compare (Eintrag E1, Eintrag E2) {return e1.getkey (). Vergleicheto (e2geKey ();}}); Eine andere Methode ist die Verwendung von SortEDMap, aber die vergleichbare Schnittstelle muss implementiert werden.
SortEdMap sortEdMap = new Treemap (neuer vergleicher () {@Overridepublic int compare (k k1, k k2) {return k1.comPareto (k2);}}); sortEdMap.putall (MAP);3.. Sortieren Sie die Karte mit Wert <br /> Dies ähnelt dem vorherigen Punkt, der Code ist wie folgt:
Listlist = new ArrayList (map.EntrySet ()); Collections.sort (Liste, neuer Vergleicher () {@Overridepublic int Compare (Eintrag E1, Eintrag E2) {return e1.getValue (). Vergleicheto (e2.getValue ());}});4.. Initialisieren Sie eine statische konstante Karte
Wenn Sie eine globale statische Karte erstellen möchten, haben wir zwei Möglichkeiten und es ist Thread-Safe.
Obwohl wir in Test1 erklären, dass die Karte statisch ist, können wir ihren Wert immer noch ändern, wenn wir initialisiert sind, genau wie bei Test1.map.put (3, "drei").
In test2 setzen wir es so, dass es in einer inneren Klasse nicht modifiziert wurde. Wenn wir also test2.map.put (3, "drei") ausführen, wird es eine werfen
Die Exception für nicht unterstützte OperationException verbietet es Sie, zu ändern. public class test1 {private statische endgültige Kartenkarte; static {map = new HashMap (); map.put (1, "eins"); map.put (2, "zwei");}} öffentliche Klassen test2 {private statische endgültige Karte; static {map amap = new Hashmap (); Amap.put (1, "eins"); Amap. Amap. Sammlungen.Unmodifiablemap (AMAP);}} 5. Der Unterschied zwischen Hashmap, Treemap und Hashtable
In der Kartenschnittstelle gibt es drei Implementierungen: HashMap, Treemap und Hashtable.
Sie sind anders. Weitere Informationen finden Sie unter dem Artikel "HashMap vs. Treemap vs. Hashtable vs. LinkedHasMap".
6. Umgekehrte Abfrage in der Karte
Nachdem wir der Karte ein Schlüsselwertpaar hinzugefügt haben, bedeutet dies, dass in der Karte der Schlüssel und der Wert einem eins entsprechen und ein Schlüssel einem Wert entspricht. Aber manchmal müssen wir Abfragen umkehren, z. B. die Suche nach seinem Schlüssel über einen bestimmten Wert. Diese Datenstruktur wird als bididirektionale Karte bezeichnet. Leider unterstützt JDK es nicht.
Apache und Guava bieten gemeinsam diese bidirektionale Kartenimplementierung an, in der sie festlegt, dass sowohl Schlüssel als auch Werte eine 1: 1 -Beziehung haben müssen.
7. Kopieren der Karte
Java bietet viele Methoden, die die Replikation einer Karte realisieren können. Diese Methoden werden jedoch möglicherweise zu keinem Zeitpunkt synchronisiert. Einfach ausgedrückt, es ist die Änderung, die in einer Karte auftritt, und der kopierte, bleibt gleich. Hier ist eine relativ effiziente Implementierungsmethode:
MAP CopieDMap = Collections.SynchronizedMap (MAP);
Natürlich gibt es eine andere Methode, die das Klonen ist. Aber unser Java -Urheber Josh Bloch empfiehlt diese Methode nicht. Er sagte einmal in einem Interview über das Klonen von Karten: Klonen werden in vielen Klassen angegeben, weil die Leute sie brauchen. Das Klonen ist jedoch sehr begrenzt und verursacht häufig unnötige Auswirkungen. (Originaltext "Konstruktor kopieren gegen Klonen")
8. Erstellen Sie eine leere Karte
Wenn diese Karte nicht verfügbar ist, kann sie durch Folgendes implementiert werden
map = collections.EmptyMap ();
Im Gegenteil, wenn wir es benutzen können, können wir es können
map = new HashMap ();
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.