CodeGym /Blog Java /Aleatoriu /Cum să actualizați valoarea unei chei existente în HashMa...
John Squirrels
Nivel
San Francisco

Cum să actualizați valoarea unei chei existente în HashMap

Publicat în grup
Știți că există întotdeauna o cheie și o valoare în HashMap sau orice altă hartă . Cheia este numită cheie dintr-un motiv pentru că ai acces la valori prin cheie. Cheia este unică, dar valoarea nu este. Deci nu puteți obține o cheie după valoare, deoarece valorile pot fi duplicate. În acest articol, vom afla cum să actualizăm valoarea unei chei existente în HashMap în Java. Să ne amintim sintaxa Java. HashMap în Java este declarat în felul următor:

 HashMap<Key, Value> name
Să luăm un exemplu. Să zicem că avem patru prieteni și, special pentru ei, am creat și am completat un HashMap cu numele lor. Cheile lor sunt numere întregi.

Map<Integer, String> names = new HashMap<Integer, String>();
       names.put(1, "Stan");
       names.put(2, "Kyle");
       names.put(3, "Kenny");
       names.put(4, "Cartman");
Notă: puteți crea și completa harta în diferite moduri. De exemplu, folosind blocul de inițializare. Iată-l:

Map<Integer, String> names = new HashMap<Integer, String>() {
           {
               put(1, "Stan");
               put(2, "Kyle");
               put(3, "Kenny");
               put(4, "Cartman");
           }
       };
Sau utilizarea unei metode și a unui constructor HashMap cu celălalt argument al hărții . Această metodă este disponibilă începând cu versiunea 9 și ulterioară.

Map<Integer, String> names = new HashMap<>(Map.of(1, "Stan", 2, "Kyle", 3, "Kenny", 4, "Cartman"));
După cum am spus mai înainte, în HashMap cheile noastre sunt numere întregi, iar valorile conțin unele șiruri de caractere, în cazul nostru, nume de caractere. Ei bine, să spunem că ceva rău i s-a întâmplat lui Kenny (acei cititori care cunosc seria de desene animate South Park, știu sigur că ceva rău i s-a întâmplat destul de des). Așa că atunci când se întâmplă, trebuie să-l scoatem pe Kenny din această companie ( HashMap- ul nostru ) și să-l înlocuim cu un alt prieten, să zicem, pe nume Butters. Acest lucru este foarte ușor de făcut, deoarece este o operație de actualizare a valorii. Băiatul nostru Kenny are o cheie == 3 . Trebuie să schimbăm valoarea pentru cheia 3, unde se află Kenny. Putem folosi metoda put() pentru a face acest lucru:

names.put(3, "Butters");
În acest caz, dacă ne afișăm harta pe ecran, rezultatul va fi următorul:

{1=Stan, 2=Kyle, 3=Butters, 4=Cartman}
Ce se întâmplă dacă totul este în regulă cu Kenny și vrem să-l ținem în companie, dar avem un motiv să-i actualizăm cheia? Spune, nu mai este numărul trei, ci numărul cinci. Să punem Kenny în harta noastră din nou cu tasta 5 și să tipărim rezultatul. Putem folosi bine metoda put . Iată codul complet pentru acest exemplu:

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);
   }
}
Probabil ați ghicit deja care va fi rezultatul:

{1=Stan, 2=Kyle, 3=Kenny, 4=Cartman, 5=Kenny}
La asta eram așteptați? Acum Kenny are două chei în HashMap . Ei bine, strict vorbind, acestea sunt două Kenny-uri diferite, orice ne-am referi, deoarece obiectul nostru este determinat în mod unic de cheie. Este ca pașaportul unei persoane, ar trebui să fie unic. Deci nu puteți doar să redenumiți sau să actualizați cheia hashmap odată adăugată direct. Această operație pur și simplu nu este disponibilă. Cu toate acestea, puteți face o manevră înșelătoare: introduceți o nouă intrare cu noua cheie și ștergeți-o pe cea veche. Acest lucru se poate face folosind metoda HashMap remove . remove() nu numai că elimină asocierea, dar returnează și valoarea ștearsă (dacă era acolo înainte). Să completăm exemplul nostru cu această operație:

//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);
   }
}
Acum am primit în sfârșit ceea ce ne trebuia, actualizat cheia prin care îl putem găsi pe Kenny. Iată rezultatul:
Kenny {1=Stan, 2=Kyle, 4=Cartman, 5=Kenny}
Desigur, putem efectua operațiunile de eliminare a „vechiului” Kenny și adăugarea unuia nou în orice ordine. Ele sunt în esență independente. Sau scurtați codul folosind o singură linie:

names.put(5, names.remove(3));
Rezultatul va fi cu siguranță același. Deci, singura modalitate corectă de a schimba o cheie în Java HashMap este să ștergeți intrarea și să introduceți aceeași valoare cu o cheie nouă. O puteți face într-un mod diferit, dar va fi aproape aceeași poveste despre adăugarea și eliminarea unui element.
Comentarii
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION