CodeGym /Java-blogg /Tilfeldig /Hvordan oppdatere verdien av en eksisterende nøkkel i Has...
John Squirrels
Nivå
San Francisco

Hvordan oppdatere verdien av en eksisterende nøkkel i HashMap

Publisert i gruppen
Du vet at det alltid er en nøkkel og en verdi i HashMap eller et hvilket som helst annet kart . Nøkkel kalles en nøkkel av en grunn fordi du får tilgang til verdier med nøkkelen. Nøkkelen er unik, men verdien er det ikke. Så du kan ikke få en nøkkel etter verdi fordi verdier kan dupliseres. I denne artikkelen skal vi finne ut hvordan du oppdaterer verdien til en eksisterende nøkkel i HashMap i Java. La oss huske Java-syntaksen. HashMap i Java erklæres på neste måte:

 HashMap<Key, Value> name
La oss ta et eksempel. La oss si at vi har fire venner, og spesielt for dem har vi laget og fylt ut et HashMap med navnene deres. Nøklene deres er heltall.

Map<Integer, String> names = new HashMap<Integer, String>();
       names.put(1, "Stan");
       names.put(2, "Kyle");
       names.put(3, "Kenny");
       names.put(4, "Cartman");
Merk: du kan opprette og fylle ut kartet ditt på forskjellige måter. For eksempel ved å bruke 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 bruk av en metode og en HashMap-konstruktør med det andre kartargumentet . Denne metoden er tilgjengelig fra versjon 9 og nyere.

Map<Integer, String> names = new HashMap<>(Map.of(1, "Stan", 2, "Kyle", 3, "Kenny", 4, "Cartman"));
Som vi sa før, i vår HashMap- nøkler er heltall, og verdiene inneholder noen strenger, i vårt tilfelle, navn på tegn. Vel, la oss si at noe ille skjedde med Kenny (de lesere som kjenner South Park-tegneserien, vet sikkert at noe ille har skjedd med Kenny ganske ofte). Så når det skjer, må vi fjerne Kenny fra dette selskapet (vårt HashMap ), og erstatte ham med en annen venn, for eksempel ved navn Butters. Dette er veldig enkelt å gjøre fordi det er en oppdateringsverdioperasjon. Kenny-gutten vår har en nøkkel == 3 . Vi må endre verdien for nøkkel 3, der Kenny befinner seg. Vi kan bruke put()- metoden for å gjøre dette:

names.put(3, "Butters");
I dette tilfellet, hvis vi viser kartet vårt på skjermen, vil resultatet være som følger:

{1=Stan, 2=Kyle, 3=Butters, 4=Cartman}
Hva om alt er bra med Kenny og vi ønsker å beholde ham i selskapet, men vi har en grunn til å oppdatere nøkkelen hans? Si, han er ikke nummer tre lenger, men nummer fem. La oss bare sette Kenny inn i kartet vårt igjen med tast 5 og skrive ut resultatet. Vi kan godt bruke put- metoden. Her er den komplette koden for dette eksemplet:

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 gjettet hva resultatet blir:

{1=Stan, 2=Kyle, 3=Kenny, 4=Cartman, 5=Kenny}
Var det dette vi ble forventet for? Nå har Kenny to nøkler i vår HashMap . Vel, strengt tatt er dette to forskjellige Kennys, uansett hva vi mener, siden objektet vårt er unikt bestemt av nøkkelen. Det er som en persons pass, det skal være unikt. Så du kan ikke bare gi nytt navn til eller oppdatere hashmap-nøkkelen når den er lagt til direkte. Denne operasjonen er rett og slett ikke tilgjengelig. Du kan imidlertid gjøre en villedende manøver: legg inn en ny oppføring med den nye nøkkelen og slett den gamle. Dette kan gjøres ved å bruke HashMap- fjerningsmetoden . remove() fjerner ikke bare assosiasjonen, men returnerer også den slettede verdien (hvis den var der før). La oss supplere vårt eksempel med denne operasjonen:

//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);
   }
}
Nå har vi endelig fått det vi trengte, oppdatert nøkkelen som vi kan finne Kenny med. Her er utgangen:
Kenny {1=Stan, 2=Kyle, 4=Cartman, 5=Kenny}
Selvfølgelig kan vi utføre operasjonene med å fjerne den "gamle" Kenny og legge til en ny i hvilken som helst rekkefølge. De er i hovedsak uavhengige. Eller forkort koden med bare én linje:

names.put(5, names.remove(3));
Resultatet blir garantert det samme. Så den eneste riktige måten å endre en nøkkel i Java HashMap på er å slette oppføringen og sette inn den samme verdien med en ny nøkkel. Du kan gjøre det på en annen måte, men det vil være nesten den samme historien om å legge til og fjerne et element.
Kommentarer
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION