CodeGym /Java-Blog /Random-DE /So aktualisieren Sie den Wert eines vorhandenen Schlüssel...
Autor
John Selawsky
Senior Java Developer and Tutor at LearningTree

So aktualisieren Sie den Wert eines vorhandenen Schlüssels in HashMap

Veröffentlicht in der Gruppe Random-DE
Sie wissen, dass es in HashMap oder jeder anderen Map immer einen Schlüssel und einen Wert gibt . Der Schlüssel wird aus einem bestimmten Grund als Schlüssel bezeichnet, da Sie über den Schlüssel Zugriff auf Werte erhalten. Der Schlüssel ist eindeutig, der Wert jedoch nicht. Sie können also keinen Schlüssel anhand des Werts ermitteln, da Werte dupliziert werden können. In diesem Artikel erfahren Sie, wie Sie den Wert eines vorhandenen Schlüssels in HashMap in Java aktualisieren. Erinnern wir uns an die Java-Syntax. HashMap in Java wird wie folgt deklariert:

 HashMap<Key, Value> name
Nehmen wir ein Beispiel. Nehmen wir an, wir haben vier Freunde und speziell für sie haben wir eine HashMap mit ihren Namen erstellt und ausgefüllt. Ihre Schlüssel sind Ganzzahlen.

Map<Integer, String> names = new HashMap<Integer, String>();
       names.put(1, "Stan");
       names.put(2, "Kyle");
       names.put(3, "Kenny");
       names.put(4, "Cartman");
Hinweis: Sie können Ihre Karte auf unterschiedliche Weise erstellen und ausfüllen . Zum Beispiel mit dem Initialisierungsblock. Hier ist es:

Map<Integer, String> names = new HashMap<Integer, String>() {
           {
               put(1, "Stan");
               put(2, "Kyle");
               put(3, "Kenny");
               put(4, "Cartman");
           }
       };
Oder Verwendung einer Methode und eines HashMap-Konstruktors mit dem anderen Kartenargument . Diese Methode ist ab Version 9 verfügbar.

Map<Integer, String> names = new HashMap<>(Map.of(1, "Stan", 2, "Kyle", 3, "Kenny", 4, "Cartman"));
Wie bereits erwähnt, sind die Schlüssel in unserer HashMap ganze Zahlen und die Werte enthalten einige Zeichenfolgen, in unserem Fall Namen von Zeichen. Nehmen wir an, dass Kenny etwas Schlimmes passiert ist (die Leser, die die Zeichentrickserie „South Park“ kennen, wissen mit Sicherheit, dass Kenny ziemlich oft etwas Schlimmes passiert ist). Wenn es also passiert, müssen wir Kenny aus dieser Firma (unserer HashMap ) entfernen und ihn durch einen anderen Freund ersetzen, beispielsweise mit dem Namen Butters. Dies ist sehr einfach durchzuführen, da es sich um einen Aktualisierungswertvorgang handelt. Unser Kenny-Junge hat einen Schlüssel == 3 . Wir müssen den Wert für Schlüssel 3 ändern, wo sich Kenny befindet. Wir können dazu die Methode put() verwenden:

names.put(3, "Butters");
Wenn wir in diesem Fall unsere Karte auf dem Bildschirm anzeigen, sieht das Ergebnis wie folgt aus:

{1=Stan, 2=Kyle, 3=Butters, 4=Cartman}
Was ist, wenn mit Kenny alles in Ordnung ist und wir ihn im Unternehmen behalten wollen, wir aber einen Grund haben, seinen Schlüssel zu aktualisieren? Sagen wir, er ist nicht mehr die Nummer drei, sondern die Nummer fünf. Fügen wir Kenny einfach noch einmal mit Taste 5 in unsere Karte ein und drucken das Ergebnis aus. Wir können die Put -Methode gut verwenden . Hier ist der vollständige Code für dieses Beispiel:

import java.util.HashMap;

public class HashMapUpdKey {
   public static void main(String[] args) {
       Map<Integer, String> names = new HashMap<>(Map.of(1, "Stan", 2, "Kyle", 3, "Kenny", 4, "Cartman"));
       names.put(5, "Kenny");
       System.out.println(names);
   }
}
Sie haben wahrscheinlich schon erraten, wie das Ergebnis aussehen wird:

{1=Stan, 2=Kyle, 3=Kenny, 4=Cartman, 5=Kenny}
Ist das das, was von uns erwartet wurde? Jetzt hat Kenny zwei Schlüssel in unserer HashMap . Streng genommen sind das zwei verschiedene Kennys, was auch immer wir meinen, da unser Objekt eindeutig durch den Schlüssel bestimmt wird. Es ist wie der Reisepass einer Person, er sollte einzigartig sein. Sie können den Hashmap-Schlüssel also nicht einfach umbenennen oder aktualisieren, sobald er direkt hinzugefügt wurde. Dieser Vorgang ist einfach nicht verfügbar. Allerdings kann man ein Täuschungsmanöver machen: mit dem neuen Schlüssel einen neuen Eintrag einfügen und den alten löschen. Dies kann mit der HashMap- Remove -Methode erfolgen . „remove()“ entfernt nicht nur die Zuordnung, sondern gibt auch den gelöschten Wert zurück (falls dieser zuvor vorhanden war). Ergänzen wir unser Beispiel mit dieser Operation:

//easy replacement example
import java.util.HashMap;

public class HashMapUpdKey {
   public static void main(String[] args) {
      Map<Integer, String> names = new HashMap<>(Map.of(1, "Stan", 2, "Kyle", 3, "Kenny", 4, "Cartman"));
           
       names.put(5, "Kenny"); //Adding “new” Kenny 
       System.out.println(names.remove(3)); //Update value of the key: Removing “old” Kenny and print out deleted value

       System.out.println(names);
   }
}
Jetzt haben wir endlich das bekommen, was wir brauchten, und den Schlüssel aktualisiert, mit dem wir Kenny finden können. Hier ist die Ausgabe:
Kenny {1=Stan, 2=Kyle, 4=Cartman, 5=Kenny}
Selbstverständlich können wir die Vorgänge des Entfernens des „alten“ Kenny und des Hinzufügens eines neuen in beliebiger Reihenfolge durchführen. Sie sind im Wesentlichen unabhängig. Oder kürzen Sie Ihren Code mit nur einer Zeile:

names.put(5, names.remove(3));
Das Ergebnis wird mit Sicherheit das gleiche sein. Die einzig richtige Möglichkeit, einen Schlüssel in Java HashMap zu ändern , besteht also darin, den Eintrag zu löschen und denselben Wert mit einem neuen Schlüssel einzufügen. Sie können es auch anders machen, aber beim Hinzufügen und Entfernen eines Elements verhält es sich fast genauso.
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION