Fusion de Java HashMap ()

La méthode Java HashMap merge () insère le mappage clé / valeur spécifié dans le hashmap si la clé spécifiée n'est déjà pas présente.

Si la clé spécifiée est déjà associée à une valeur, la méthode remplace l'ancienne valeur par le résultat de la fonction spécifiée.

La syntaxe de la merge()méthode est:

 hashmap.merge(key, value, remappingFunction)

Ici, hashmap est un objet de la HashMapclasse.

Merge () Paramètres

La merge()méthode prend 3 paramètres:

  • key - clé à laquelle la valeur spécifiée doit être associée
  • valeur - valeur à associer à la clé, si la clé est déjà associée à une valeur
  • remappingFunction - résultat à associer à la clé si la clé est déjà associée à une valeur

merge () Valeur de retour

  • renvoie la nouvelle valeur associée à la clé
  • retourne nullsi aucune valeur associée à la clé

Remarque : Si remappingFunction en résulte null, le mappage de la clé spécifiée est supprimé.

Exemple 1: HashMap merge () pour insérer une nouvelle entrée

 import java.util.HashMap; class Main ( public static void main(String() args) ( // create an HashMap HashMap prices = new HashMap(); // insert entries to the HashMap prices.put("Shoes", 200); prices.put("Bag", 300); prices.put("Pant", 150); System.out.println("HashMap: " + prices); int returnedValue = prices.merge("Shirt", 100, (oldValue, newValue) -> oldValue + newValue); System.out.println("Price of Shirt: " + returnedValue); // print updated HashMap System.out.println("Updated HashMap: " + prices); ) )

Production

 HashMap: (Pantalon = 150, Sac = 300, Chaussures = 200) Prix de la chemise: 100 HashMap mis à jour: (Pantalon = 150, Chemise = 100, Sac = 300, Chaussures = 200)

Dans l'exemple ci-dessus, nous avons créé un hashmap nommé price. Remarquez l'expression,

 prices.merge("Shirt", 100, (oldValue, newValue) -> oldValue + newValue)

Ici, nous avons utilisé l'expression lambda, (oldValue, newValue) -> oldValue + newValue)comme fonction de remappage. Pour en savoir plus sur l'expression lambda, visitez Expressions Java Lambda.

Puisque la clé Shirt n'est pas présente dans les prix, la merge()méthode insère le mappage Shirt=100. Et, le résultat de la fonction de remappage est ignoré.

Exemple 2: HashMap merge () pour insérer une entrée avec une clé en double

 import java.util.HashMap; class Main ( public static void main(String() args) ( // create an HashMap HashMap countries = new HashMap(); // insert entries to the HashMap countries.put("Washington", "America"); countries.put("Canberra", "Australia"); countries.put("Madrid", "Spain"); System.out.println("HashMap: " + countries); // merge mapping for key Washington String returnedValue = countries.merge("Washington", "USA", (oldValue, newValue) -> oldValue + "/" + newValue); System.out.println("Washington: " + returnedValue); // print updated HashMap System.out.println("Updated HashMap: " + countries); ) )

Production

 HashMap: (Madrid = Espagne, Canberra = Australie, Washington = Amérique) Washington: Amérique / USA HashMap mis à jour: (Madrid = Espagne, Canberra = Australie, Washington = Amérique / USA), 

Dans l'exemple ci-dessus, nous avons créé un hashmap nommé pays. Remarquez l'expression,

 countries.merge("Washington", "USA", (oldValue, newValue) -> oldValue + "/" + newValue)

Ici, nous avons utilisé l'expression lambda, (oldValue, newValue) -> oldValue + "/" + newValue)comme fonction de remappage.

La clé Washington étant déjà présente dans les pays, l'ancienne valeur est remplacée par la valeur renvoyée par la fonction de remappage. Par conséquent, la cartographie pour Washington comprend la valeur Amérique / États-Unis.

Exemple 3: HashMap merge () pour fusionner deux HashMaps

 import java.util.HashMap; class Main ( public static void main(String() args) ( // create an HashMap HashMap prices1 = new HashMap(); // insert entries to the HashMap prices1.put("Pant", 230); prices1.put("Shoes", 350); System.out.println("HashMap 1: " + prices1); // create another hashmap HashMap prices2 = new HashMap(); //insert entries to the HashMap prices2.put("Shirt", 150); prices2.put("Shoes", 320); System.out.println("HashMap 2: " + prices2); // forEach() access each entries of prices2 // merge() inserts each entry from prices2 to prices1 prices2.forEach((key, value) -> prices1.merge(key, value, (oldValue, newValue) -> ( // return the smaller value if (oldValue < newValue) ( return oldValue; ) else ( return newValue; ) ))); System.out.println("Merged HashMap: " + prices1); ) )

Production

 HashMap 1: (Pantalon = 230, Chaussures = 350) HashMap 2: (Chemise = 150, Chaussures = 320) HashMap fusionné: (Pantalon = 230, Chemise = 150, Chaussures = 320)

Dans l'exemple ci-dessus, nous avons créé deux hashmaps nommés price1 et price2. Notez le code,

  prices2.forEach((key, value) -> prices1.merge(key, value, (oldValue, newValue) -> ( if (oldValue < newValue) ( return oldValue; ) else ( return newValue; ) )));

Ici, la méthode HashMap forEach () accède à chaque entrée des prix hashmap2 et la fusionne avec les prix hashmap1. Nous avons utilisé deux expressions lambda:

  • (clé, valeur) -> price.merge (…) - Il accède à chaque entrée de price1 et la transmet à la merge()méthode.
  • (oldValue, newValue) -> (…) - C'est une fonction de remappage. Il compare deux valeurs et renvoie la plus petite valeur.

Puisque la clé Shoes est présente à la fois dans le hashmap, la valeur de Shoes est remplacée par le résultat de la fonction de remappage.

Java HashMap merge () Vs. Met tout

Nous pouvons également utiliser la putAll()méthode pour fusionner deux hashmaps. Cependant, si une clé est présente dans les deux hashmaps, l'ancienne valeur est remplacée par la nouvelle valeur.

Contrairement à merge(), la putAll()méthode ne fournit pas la fonction de remappage. Par conséquent, nous ne pouvons pas décider de la valeur à stocker pour les clés en double.

Pour en savoir plus sur la putAll()méthode, visitez Java HashMap putAll ().

Articles intéressants...