CodeGym /Java blog /Tilfældig /Sådan opdaterer du værdien af en eksisterende nøgle i Has...
John Squirrels
Niveau
San Francisco

Sådan opdaterer du værdien af en eksisterende nøgle i HashMap

Udgivet i gruppen
Du ved, at der altid er en nøgle og en værdi i HashMap eller et hvilket som helst andet kort . Nøgle kaldes en nøgle af en grund, fordi du får adgang til værdier med nøglen. Nøglen er unik, men værdien er det ikke. Så du kan ikke få en nøgle efter værdi, fordi værdier kan duplikeres. I denne artikel skal vi finde ud af, hvordan du opdaterer værdien af ​​en eksisterende nøgle i HashMap i Java. Lad os huske Java-syntaksen. HashMap i Java erklæres på den næste måde:

 HashMap<Key, Value> name
Lad os tage et eksempel. Lad os sige, vi har fire venner, og specielt for dem har vi oprettet og udfyldt et HashMap med deres navne. Deres nøgler er heltal.

Map<Integer, String> names = new HashMap<Integer, String>();
       names.put(1, "Stan");
       names.put(2, "Kyle");
       names.put(3, "Kenny");
       names.put(4, "Cartman");
Bemærk: du kan oprette og udfylde dit kort på forskellige måder. For eksempel ved hjælp af initialiseringsblokken. Her er det:

Map<Integer, String> names = new HashMap<Integer, String>() {
           {
               put(1, "Stan");
               put(2, "Kyle");
               put(3, "Kenny");
               put(4, "Cartman");
           }
       };
Eller brug af en metode og en HashMap-konstruktør med det andet kortargument . Denne metode er tilgængelig fra version 9 og nyere.

Map<Integer, String> names = new HashMap<>(Map.of(1, "Stan", 2, "Kyle", 3, "Kenny", 4, "Cartman"));
Som vi sagde før, er nøgler i vores HashMap heltal, og værdierne indeholder nogle strenge, i vores tilfælde navne på tegn. Nå, lad os sige, at der skete noget slemt med Kenny (de læsere, der kender South Park-tegneserien, ved med sikkerhed, at der er sket noget slemt med Kenny ret ofte). Så når det sker, er vi nødt til at fjerne Kenny fra dette firma (vores HashMap ), og erstatte ham med en anden ven, f.eks. ved navn Butters. Dette er meget nemt at gøre, fordi det er en opdateringsværdioperation. Vores Kenny dreng har en nøgle == 3 . Vi skal ændre værdien for nøgle 3, hvor Kenny er placeret. Vi kan bruge put() metoden til at gøre dette:

names.put(3, "Butters");
I dette tilfælde, hvis vi viser vores kort på skærmen, vil resultatet være som følger:

{1=Stan, 2=Kyle, 3=Butters, 4=Cartman}
Hvad hvis alt er fint med Kenny, og vi vil beholde ham i virksomheden, men vi har en grund til at opdatere hans nøgle? Sig, han er ikke nummer tre længere, men nummer fem. Lad os bare sætte Kenny ind på vores kort igen med tast 5 og udskrive resultatet. Vi kan godt bruge put - metoden. Her er den komplette kode til dette eksempel:

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);
   }
}
Du har sikkert allerede gættet, hvad resultatet bliver:

{1=Stan, 2=Kyle, 3=Kenny, 4=Cartman, 5=Kenny}
Var det det, vi havde forventet? Nu har Kenny to nøgler i vores HashMap . Nå, strengt taget er det to forskellige Kennys, uanset hvad vi mener, da vores objekt er unikt bestemt af nøglen. Det er ligesom en persons pas, det skal være unikt. Så du kan ikke bare omdøbe eller opdatere hashmap-nøglen, når den er tilføjet direkte. Denne operation er simpelthen ikke tilgængelig. Du kan dog lave en vildledende manøvre: Indsæt en ny post med den nye nøgle og slet den gamle. Dette kan gøres ved hjælp af HashMap- fjernelsesmetoden . remove() fjerner ikke kun tilknytningen, men returnerer også den slettede værdi (hvis den var der før). Lad os supplere vores eksempel med denne 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);
   }
}
Nu fik vi endelig, hvad vi havde brug for, opdateret nøglen, hvormed vi kan finde Kenny. Her er outputtet:
Kenny {1=Stan, 2=Kyle, 4=Cartman, 5=Kenny}
Selvfølgelig kan vi udføre operationerne med at fjerne den "gamle" Kenny og tilføje en ny i vilkårlig rækkefølge. De er grundlæggende uafhængige. Eller forkort din kode med kun én linje:

names.put(5, names.remove(3));
Resultatet bliver helt sikkert det samme. Så den eneste rigtige måde at ændre en nøgle i Java HashMap på er at slette posten og indsætte den samme værdi med en ny nøgle. Du kan gøre det på en anden måde, men det vil være næsten den samme historie om at tilføje og fjerne et element.
Kommentarer
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION