English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
La méthode computeIfAbsent() de Java HashMap calcule une nouvelle valeur et l'associe à la clé spécifiée si cette clé n'est pas associée à aucune valeur dans la table de hachage.
La syntaxe de la méthode computeIfAbsent() est :
hashmap.computeIfAbsent(K clé, Function fonctionDeRemapage)
La méthode computeIfAbsent() a deux paramètres :
key - 与计算值关联的键
de la valeur calculée associée à la clé - remappingFunctionCléFonction pour calculer une nouvelle valeur spécifiée pour
Remarque:La fonction de remapping ne peut pas accepter deux paramètres.
Retourne la nouvelle valeur ou l'ancienne valeur associée à la clé spécifiée
Fonction pour calculer une nouvelle valeur spécifiée pour la clé
Remarque:Si le résultat de remappingFunction est null, la clé spécifiéeCléde la correspondance.
import java.util.HashMap; class Main { public static void main(String[] args) { // Créer une HashMap HashMap<String, Integer> prices = new HashMap<>(); // Insérer une entrée dans la HashMap prices.put("Shoes", 200); prices.put("Bag", 300); prices.put("Pant", 150); System.out.println("HashMap: ") + prices); // Calculer la valeur du chemise int shirtPrice = prices.computeIfAbsent("Shirt", key -> 280); System.out.println("Prix du chemise: ") + shirtPrice); // Imprimer la mise à jour de la HashMap System.out.println("Updated HashMap: ") + prices); } }
Output result
HashMap: {Pant=150, Bag=300, Shoes=200} Prix du chemise: 280 Updated HashMap: {Pant=150, Shirt=280, Bag=300, Shoes=200}
Dans l'exemple précédent, nous avons créé une carte de hachage nommée prices. Notez l'expression
prices.computeIfAbsent("Shirt", key -> 280)
ici,
key -> 280 - C'est une expression lambda. Elle retourne la valeur28Pour plus d'informations sur les expressions lambda, veuillez visiterJava Lambda expressions。
prices.computeIfAbsent() - Lier la nouvelle valeur retournée par l'expression lambda à la correspondance de Shirt. C'est possible car Shirt n'est pas encore mappé à aucune valeur dans le hashmap.
import java.util.HashMap; class Main { public static void main(String[] args) { // Créer une HashMap HashMap<String, Integer> prices = new HashMap<>(); // Insérer une entrée dans la HashMap prices.put("Shoes", 180); prices.put("Bag", 300); prices.put("Pant", 150); System.out.println("HashMap: ") + prices); //La correspondance de Shoes existe déjà //Ne pas calculer la nouvelle valeur de Shoes int shoePrice = prices.computeIfAbsent("Shoes", (key) -> 280); System.out.println("Prix des chaussures: ") + shoePrice); //Print the updated HashMap System.out.println("Updated HashMap: ") + prices); } }
Output result
HashMap: {Pant=150, Bag=300, Shoes=180} Shoes price: 180 Updated HashMap: {Pant=150, Bag=300, Shoes=180}
In the above examples, the mapping of Shoes already exists in the hash map. Therefore, the computeIfAbsent() method will not calculate a new value for Shoes.
Recommended reading
HashMap compute() - Calculate the value of the specified key
HashMap computeIfPresent() - If the specified key is already mapped to a value, calculate the value
Java HashMap merge() - Perform the same task as compute()