CodeGym /Blog Java /Random-FR /Comment mettre à jour la valeur d'une clé existante dans ...
Auteur
John Selawsky
Senior Java Developer and Tutor at LearningTree

Comment mettre à jour la valeur d'une clé existante dans HashMap

Publié dans le groupe Random-FR
Vous savez qu'il y a toujours une clé et une valeur dans HashMap ou tout autre Map . La clé est appelée clé pour une raison car vous avez accès aux valeurs par la clé. La clé est unique, mais la valeur ne l'est pas. Vous ne pouvez donc pas obtenir une clé par valeur car les valeurs peuvent être dupliquées. Dans cet article, nous allons découvrir comment mettre à jour la valeur d'une clé existante dans HashMap en Java. Rappelons-nous la syntaxe Java. HashMap en Java est déclaré de la manière suivante :

 HashMap<Key, Value> name
Prenons un exemple. Disons que nous avons quatre amis et spécialement pour eux, nous avons créé et rempli un HashMap avec leurs noms. Leurs clés sont des nombres entiers.

Map<Integer, String> names = new HashMap<Integer, String>();
       names.put(1, "Stan");
       names.put(2, "Kyle");
       names.put(3, "Kenny");
       names.put(4, "Cartman");
Remarque : vous pouvez créer et remplir votre carte de différentes manières. Par exemple, en utilisant le bloc d'initialisation. C'est ici:

Map<Integer, String> names = new HashMap<Integer, String>() {
           {
               put(1, "Stan");
               put(2, "Kyle");
               put(3, "Kenny");
               put(4, "Cartman");
           }
       };
Ou en utilisant une méthode et un constructeur HashMap avec l'autre argument map . Cette méthode est disponible à partir de la version 9 et ultérieure.

Map<Integer, String> names = new HashMap<>(Map.of(1, "Stan", 2, "Kyle", 3, "Kenny", 4, "Cartman"));
Comme nous l'avons dit précédemment, dans notre HashMap , les clés sont des nombres entiers et les valeurs contiennent des chaînes, dans notre cas, des noms de caractères. Eh bien, disons que quelque chose de mal est arrivé à Kenny (les lecteurs qui connaissent la série de dessins animés de South Park savent avec certitude que quelque chose de mal est arrivé à Kenny assez souvent). Donc, quand cela arrive, nous devons retirer Kenny de cette société (notre HashMap ) et le remplacer par un autre ami, disons, du nom de Butters. C'est très facile à faire car il s'agit d'une opération de mise à jour de la valeur. Notre garçon Kenny a une clé == 3 . Nous devons changer la valeur de la clé 3, où se trouve Kenny. Nous pouvons utiliser la méthode put() pour faire ceci :

names.put(3, "Butters");
Dans ce cas, si nous affichons notre carte à l'écran, le résultat sera le suivant :

{1=Stan, 2=Kyle, 3=Butters, 4=Cartman}
Et si tout allait bien avec Kenny et que nous voulions le garder dans l'entreprise, mais que nous avions une raison de mettre à jour sa clé ? Dites, il n'est plus le numéro trois, mais le numéro cinq. Replaçons simplement Kenny dans notre carte avec la touche 5 et imprimons le résultat. Nous pouvons bien utiliser la méthode put . Voici le code complet de cet exemple :

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);
   }
}
Vous avez probablement déjà deviné quel sera le résultat :

{1=Stan, 2=Kyle, 3=Kenny, 4=Cartman, 5=Kenny}
Est-ce pour cela que nous étions attendus ? Kenny a maintenant deux clés dans notre HashMap . Eh bien, à proprement parler, ce sont deux Kenny différents, quoi que nous entendions, puisque notre objet est uniquement déterminé par la clé. C'est comme le passeport d'une personne, il doit être unique. Vous ne pouvez donc pas simplement renommer ou mettre à jour la clé de hashmap une fois ajoutée directement. Cette opération n'est tout simplement pas disponible. Cependant, vous pouvez faire une manœuvre trompeuse : insérer une nouvelle entrée avec la nouvelle clé et supprimer l'ancienne. Cela peut être fait en utilisant la méthode de suppression HashMap . remove() supprime non seulement l'association mais renvoie également la valeur supprimée (si elle s'y trouvait auparavant). Complétons notre exemple avec cette opération :

//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);
   }
}
Maintenant, nous avons enfin obtenu ce dont nous avions besoin, mis à jour la clé par laquelle nous pouvons trouver Kenny. Voici la sortie :
Kenny {1=Stan, 2=Kyle, 4=Cartman, 5=Kenny}
Bien sûr, nous pouvons effectuer les opérations de suppression de "l'ancien" Kenny et d'en ajouter un nouveau dans n'importe quel ordre. Ils sont essentiellement indépendants. Ou raccourcissez votre code en utilisant une seule ligne :

names.put(5, names.remove(3));
Le résultat sera certainement le même. Ainsi, la seule façon appropriée de changer une clé dans Java HashMap est de supprimer l'entrée et d'insérer la même valeur avec une nouvelle clé. Vous pouvez le faire d'une manière différente, mais ce sera presque la même histoire concernant l'ajout et la suppression d'un élément.
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION