Java HashMap computeIfAbsent ()

La méthode Java HashMap computeIfAbsent () calcule une nouvelle valeur et l'associe à la clé spécifiée si la clé n'est associée à aucune valeur du hashmap.

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

 hashmap.computeIfAbsent(K key, Function remappingFunction)

Ici, hashmap est un objet de la HashMapclasse.

Paramètres computeIfAbsent ()

La computeIfAbsent()méthode prend 2 paramètres:

  • key - clé à laquelle la valeur calculée doit être associée
  • remappingFunction - fonction qui calcule la nouvelle valeur pour la clé spécifiée

Remarque : la fonction de remappage ne peut pas prendre deux arguments.

Valeur de retour computeIfAbsent ()

  • renvoie la nouvelle ou l' ancienne valeur associée à la clé spécifiée
  • 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: Java HashMap computeIfAbsent ()

 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); // compute the value of Shirt int shirtPrice = prices.computeIfAbsent("Shirt", key -> 280); System.out.println("Price of Shirt: " + shirtPrice); // print updated HashMap System.out.println("Updated HashMap: " + prices); ) )

Production

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

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

 prices.computeIfAbsent("Shirt", key -> 280)

Ici,

  • key -> 280 est une expression lambda. Il renvoie la valeur 280. Pour en savoir plus sur l'expression lambda, visitez Expressions Java Lambda.
  • price.computeIfAbsent () associe la nouvelle valeur renvoyée par l'expression lambda au mappage pour Shirt. Cela n'est possible que parce que Shirt n'est déjà mappé à aucune valeur dans la carte de hachage.

Exemple 2: computeIfAbsent () si la clé est déjà présente

 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", 180); prices.put("Bag", 300); prices.put("Pant", 150); System.out.println("HashMap: " + prices); // mapping for Shoes is already present // new value for Shoes is not computed int shoePrice = prices.computeIfAbsent("Shoes", (key) -> 280); System.out.println("Price of Shoes: " + shoePrice); // print updated HashMap System.out.println("Updated HashMap: " + prices); ) )

Production

 HashMap: (Pantalon = 150, Sac = 300, Chaussures = 180) Prix des chaussures: 180 HashMap mis à jour: (Pantalon = 150, Sac = 300, Chaussures = 180)

Dans l'exemple ci-dessus, le mappage pour Shoes est déjà présent dans la hashmap. Par conséquent, la computeIfAbsent()méthode ne calcule pas la nouvelle valeur de Shoes.

lecture recommandée

  • HashMap compute () - calcule la valeur de la clé spécifiée
  • HashMap computeIfPresent () - calcule la valeur si la clé spécifiée est déjà mappée à une valeur
  • Java HashMap merge () - effectue la même tâche que compute()

Articles intéressants...