So verwenden Sie Hashmap in Java

So verwenden Sie Hashmap in Java
Bevor der Leser weiß, wie man einen HashMap in Java benutzt, muss er wissen, was ein Hashmap ist. Betrachten Sie die folgenden Schlüssel-/Wertpaare von Früchten und deren Farben: Rot Apfel => Rot
Banane => Gelb
Zitrone => hellgelb
Limette => Gelbgrün
Kivi => grün
Avocado => grün
Traube => lila
Fig => lila
=> - - - - -
=> - - - - -
=> - - - - -

Die Spalte links hat die Schlüssel und die Spalte rechts die entsprechenden Werte. Beachten Sie, dass die Früchte, Kivi und Avocado die gleiche Farbe haben, grün. Auch die Früchte, Trauben und Feigen haben die gleiche Farbe, lila. Am Ende der Liste warten drei Standorte auf ihre eigenen Farben. Diese Standorte haben keine entsprechenden Früchte; Mit anderen Worten, diese drei Standorte haben keine entsprechenden Schlüssel.

Alle Standorte, ob gefüllt oder nicht, rechts werden als Eimer bezeichnet. Für jeden Wert gibt es einen Schlüssel. Die Schlüssel sind einzigartig. Die Werte müssen nicht einzigartig sein. Dies ist eine viel- und eins-eins-Beziehung.

Was in der Tabelle gespeichert ist, ist die rechte Spalte. Das heißt, was in der Tabelle gespeichert ist, sind die Werte. Schlüssel müssen nicht gespeichert werden. Der Schlüssel wird als Argument an eine Funktion gesendet, die als Hash -Funktion bezeichnet wird, um zu einem Wert zu gelangen. Die Hash -Funktion erzeugt den entsprechenden Index, der einem bestimmten Wert zugeordnet ist.

Jede Struktur, die alle oben genannten Beschreibungen entspricht, wird als Hash bezeichnet. Mit dem HashMap in Java sind die Schlüssel von einem Objekttyp und die Werte von einem anderen Objekttyp stammen aus. Es kann einen Nullschlüssel geben, und es kann mehr als einen Nullwert geben.

Die Größe eines Hashmap ist die Anzahl der Schlüssel-/Wertpaare (Einträge). Die Kapazität einer Hashmap ist die Anzahl der Eimer, ob gefüllt oder nicht. Die Kapazität sollte immer größer sein als die Größe.

Mit der obigen Einführung kann der Leser jetzt lernen, wie man in Java eine Hashmap benutzt.

Artikelinhalt

  • Konstruktion
  • Einschließlich Schlüssel-/Wertpaare inklusive
  • Größe von Hashmap
  • Lesen Sie die Hashmap
  • Ändern des Hashmap
  • Abschluss

Konstruktion

Die HashMap ist eine Klasse, aus der ein HashMap -Objekt erstellt werden kann. Das Erstellen eines Objekts aus einer Klasse erstellt das Objekt. Es gibt 4 Möglichkeiten, eine Hashmap in Java zu konstruieren.

Ladefaktor

Der Lastfaktor ist die Anzahl der Schlüssel-/Wertpaare geteilt durch die Anzahl der Eimer.

HashMap ()

Diese Konstruktormethode würde eine Hashmap der Kapazität 16 und des Lastfaktors 0 erzeugen.75. Dies bedeutet, dass die Anzahl der Eimer 16 (und leer) und der Standardlastfaktor 0 beträgt.75. Nach der Erstellung des HashMap werden Schlüssel-/Wertpaare enthalten. In diesem Fall erreicht die Anzahl der Schlüssel-/Wertpaare bei 12/16 = 0 12.75, die Hashmap wird automatisch neu auferlegt. Dies bedeutet, dass die Anzahl der Eimer automatisch auf 32 erhöht wird (Verdoppelung). Der folgende Code zeigt, wie ein HashMap -Objekt mit diesem Konstruktor erstellt wird:

Java importieren.Util.*;
Klasse Theclass
public static void main (String [] args)
HashMap hm = new HashMap ();

Die Hashmap -Klasse ist in Java.Util -Paket. Für diesen Code wären die Schlüssel Strings, und die Werte wären auch Zeichenfolgen.

Hashmap (int initialCapacity)

Dadurch kann der Programmierer mit einer anderen Kapazität beginnen, aber immer noch mit einem Lastfaktor von 0.75. Illustration:

Java importieren.Util.*;
Klasse Theclass
public static void main (String [] args)
HashMap HM = New HashMap (20);

Das Hasmap -Objekt hier beginnt also mit 20 leeren Eimern. Hier sind die Schlüssel Ganzzahlen. Sie unterscheiden sich von Array -Indizes in dem Sinne, dass der erste Index nicht unbedingt Null ist. Auch die Indizes sind nicht zusammenhängend. Zum Beispiel der erste Index vielleicht 20; Der nächste ist 35, der nach 52 usw.

Hinweis: Mit der HashMap wird die Bestellung der Schlüssel-/Wertpaare nicht beibehalten. Das heißt, wenn ein Satz von Schlüssel-/Wertpaaren in einer Reihenfolge enthalten ist, die den Inhalt anzeigen, ist die Bestellung unterschiedlich, obwohl alle enthaltenen Schlüssel-/Wertpaare immer noch da sind.

Schlüssel-/Wertpaare für das HashMap werden besser als Zuordnungen bezeichnet.

HashMap (intit initialCapacity, Float -Loadfaktor)

Hier wird auch der Lastfaktor zitiert. Der Lastfaktor ist ein Float -Typ und kein ganzzahliger Typ. Hier ein Lastfaktor von 0.75 wird zitiert. Es gibt Vor- und Nachteile, einen Lastfaktor zu haben, der sich von 0 unterscheidet.75 - Siehe später. Illustration:

Java importieren.Util.*;
Klasse Theclass
public static void main (String [] args)
Hashmap HM = New HashMap (20,0.62f);

Beachten Sie die Verwendung von 'f' als Suffix für den Lastfaktor.

Hashmap (Karte m)
Dieser Konstruktor erstellt eine HashMap aus einer Karte, die bereits vorhanden ist - später siehe.

Einschließlich Schlüssel-/Wertpaare inklusive

put (k key, v Wert)
Diese Methode bezieht einen bestimmten Wert auf einen bestimmten Schlüssel. Der Schlüssel wird tatsächlich in einen Index gehasht, der direkt mit dem Wert verbunden ist. Es ist jedoch der Programmierer oder Benutzer, der sich für den Wert und seinen Schlüssel entscheidet. Das folgende Beispiel erstellt eine HASMAP, HM und enthält alle Schlüssel-/Wertpaare und die leeren Eimer von oben:

Java importieren.Util.*;
Klasse Theclass
public static void main (String [] args)
HashMap HM = New HashMap (11);
Hm.put ("roter Apfel", "rot");
Hm.put ("Banane", "Gelb");
Hm.put ("Zitrone", "hellgelb");
Hm.put ("Lime", "gelb Grün");
Hm.put ("kivi", "grün");
Hm.put ("Avocado", "grün");
Hm.put ("Traube", "lila");
Hm.put ("Feigen", "lila");

Die Kapazität ist 11. Die Anzahl der Schlüssel-/Wertpaare beträgt 8. Dies bedeutet, dass die Größe 8 beträgt. Der effektive Lastfaktor ist also 8/11 = 0.73f. Die Anzahl der leeren Eimer beträgt 11 - 8 = 3.

PutifabSent (K Key, V -Wert)
Dies schließt das Schlüssel-/Wertpaar ein, wenn der Schlüssel noch nicht in der HashMap vorhanden ist. In diesem Fall ist der Rückgabewert null. Wenn der Schlüssel bereits existiert, ändert sich nichts und der alte Wert für den Schlüssel wird zurückgegeben. Wenn der folgende Code am Ende des obigen Code (in main ()) hinzugefügt wird, wäre die Ausgabe null:

Zeichenfolge v = hm.PutifabSent ("Wassermelone", "grün");
System.aus.println (v);

Hinweis: Put (K -Schlüssel, V -Wert) würde das Schlüssel-/Wertpaar für den betreffenden Schlüssel verdrängen, der bereits vorhanden ist, und gibt effektiv einen neuen Wert für den Schlüssel an.

Größe von Hashmap

Die Größe des Hashmap ist die Anzahl der Schlüssel-/Wertpaare.

Größe()
Die folgende Erklärung gibt die Größe des Hashmap zurück:

int sz = hm.Größe();

ist leer()
Diese Methode gibt true zurück, wenn der HashMap keine Schlüsselwert-Zuordnungen enthält, oder sonst falsch falsch. Beispiel:

boolean BL = hm.ist leer();
System.aus.println (bl);

Eine leere Hashmap kann leere Eimer haben.

Lesen Sie die Hashmap

get (Objektschlüssel)
Gibt den Wert, der dem Schlüssel entspricht, zurück (kopiert); oder gibt null zurück, wenn kein entsprechender Wert vorhanden ist. Beispiel:

String str = hm.Get ("Banane");
System.aus.println (str);

Enthält Key (Objektschlüssel)
Gibt true zurück, wenn für diesen bestimmten Schlüssel eine Zuordnung vorliegt. ansonsten falsch. Beispiel:

boolean BL = hm.enthälty ("Banane");

enthält den Wert (Objektwert)
Gibt true zurück, wenn es eine Zuordnung für diesen Wert gibt. ansonsten falsch. Beispiel:

boolean BL = hm.enthältValue ("grün");

Schlüsselsatz()
Diese Methode gibt alle Schlüssel der Schlüssel-/Wertpaare zurück. Beispielcode:

Setzen Sie ST = hm.Schlüsselsatz();
für (String val: st)
System.aus.print (val + ",");
System.aus.println ();

Beachten Sie, dass das Rückgabeobjekt ein Satz ist. Wenn die obige ursprüngliche Hashmap verwendet wird, wäre der Ausgang:

Zitrone, Kivi, Feigen, Traube, Limette, Avocado, roter Apfel, Banane,

Beachten Sie, dass die Bestellung nicht die Reihenfolge ist, in der die Schlüssel eingeschlossen wurden.

Werte()
Diese Methode gibt eine Sammlung aller Werte im HashMap zurück. Beispielcode:

Sammlung cl = hm.Werte();
für (String val: cl)
System.aus.print (val + ",");
System.aus.println ();

Beachten Sie, dass das Rückgabeobjekt eine Sammlung ist. Wenn die obige ursprüngliche Hashmap verwendet wird, wäre der Ausgang:

hellgelb, grün, lila, lila, gelbgrün, grün, rot, gelb,

Beachten Sie, dass die Reihenfolge nicht die Reihenfolge ist, in der die Werte eingeschlossen wurden.

Einstieg ()
Dies gibt alle Schlüssel-/Wertpaare zurück, aber der Programmierer muss jeden Schlüssel von seinem entsprechenden Wert trennen. Beispielcode:

Satz stm = hm.EinstiegSet ();
für (Karte.Eintrag KV: STM)
System.aus.println (kv.getKey () + "=>" + kv.Wert erhalten());

Wenn die obige ursprüngliche Hashmap verwendet wird, wäre der Ausgang:

Zitrone => hellgelb
Kivi => grün
Fig => lila
Traube => lila
Limette => Gelbgrün
Avocado => grün
Rotapfel => Rot
Banane => Gelb

Beachten Sie, dass die Reihenfolge nicht die Reihenfolge ist, in der die Schlüssel-/Wertpaare enthalten waren.

Ändern des Hashmap

put (k key, v Wert)
Die Put () -Methode ähnelt der Methode putIfababSent (), wenn der Schlüssel, wenn bereits vorhanden ist, der alte Wert zurückgegeben wird, und wenn der Schlüssel nicht bereits existiert, wird Null zurückgegeben. Vergessen Sie nicht, dass put () den alten Wert ersetzt, wenn der Schlüssel bereits vorhanden ist. Wenn der Schlüssel noch nicht vorhanden ist, enthält Put () den neuen Eintrag (Schlüssel-/Wertpaar).

Ersetzen (K -Schlüssel, V -Wert)
Für einen bereits vorhandenen Schlüssel wird diese Methode verwendet, um den Wert für den entsprechenden Schlüssel zu ersetzen. Die Hashmap ist eine viele zu eins-Struktur. Ein Beispielcode für das obige HashMap ist:

Zeichenfolge v = hm.ersetzen ("Banane", "weiß");
System.aus.println (v);
String str = hm.Get ("Banane");
System.aus.println (str);

Die Ausgabe ist:

Gelb
Weiss

Die Methode Ersatz () gibt den alten Wert zurück. Wenn der Schlüssel nicht existiert, kehrt er null zurück, und nichts wird ersetzt.

Ersetzen (K Key, v OldValue, V NewValue)
Dies ermöglicht den Austausch eines bestimmten Wertes, von dem der Programmierer bekannt ist. Es kehrt wahr zurück, wenn es erfolgreich war und falsch, wenn es nicht der Fall war. Beispielcode für das obige HashMap -Objekt lautet:

boolean BL = hm.ersetzen ("Traube", "lila", "braun");
System.aus.println (bl);

entfernen (Objekttaste)
Dadurch wird das von der Schlüssel zugeordnete Schlüssel-/Wertpaar abgebildet. Es gibt den entsprechenden Wert zurück, der entfernt wurde. Es kehrt null zurück, wenn der Schlüssel nicht vorhanden war. Beispielcode für das obige HashMap ist:

Zeichenfolge v = hm.entfernen ("Banane");
System.aus.println (v);

entfernen (Objektschlüssel, Objektwert)
Dadurch werden ein Eintrag (Schlüssel-/Wertpaar) für einen bestimmten Wert entfernt, den der Programmierer kennt. Es kehrt wahr zurück, wenn es erfolgreich war und falsch, wenn es nicht der Fall war. Beispielcode für das obige HashMap -Objekt lautet:

boolean BL = hm.entfernen ("Avocado", "grün");
System.aus.println (bl);

Abschluss

Ein Array kann als Zuordnung von Indizes zu Werten (eines bestimmten Typs) betrachtet werden. Ein HashMap sollte verwendet werden, wenn die Zuordnung eines Objekttyps auf einen anderen Objekttyp benötigt wird. Auf diese Weise gibt es Schlüssel-/Wertpaare. Ein Hash ist eine Datenstruktur, bei der die Anzahl der Werte begrenzt ist, aber die Anzahl der möglichen Schlüssel mehr als die Anzahl der möglichen Werte ist. Und so müssen Schlüssel gehasht werden, um zu den Werten zu gelangen. Java Hashmap für seine implizite Hash -Funktion wurde oben vorgestellt. Der Programmierer kann seine eigene Hashing (Mapping) -Funktion schreiben. Dies ist jedoch ein Thema für ein anderes Mal.

Chrys