Sobes.tech
Middle

Quelle est la différence entre les méthodes put et compute?

sobes.tech IA

Réponse de l'IA

put(key, value) associe simplement value à key, en remplaçant la valeur existante si la clé est déjà présente.

compute(key, remappingFunction) calcule une nouvelle valeur pour key en utilisant la fonction fournie remappingFunction. La fonction prend la clé actuelle et sa valeur actuelle (ou null si la clé n'existe pas) et retourne une nouvelle valeur qui sera associée à la clé. Si la fonction retourne null, l'entrée est supprimée.

Principales différences :

  • Gestion des clés absentes : put insère une nouvelle valeur. compute peut utiliser la valeur précédente (même null) pour en calculer une nouvelle.
  • Dépendance de la valeur précédente : put définit la valeur indépendamment de la précédente. compute utilise explicitement la valeur précédente dans la fonction de calcul.
  • Suppression d'entrées : put(key, null) supprime l'entrée. compute supprime l'entrée si la fonction de calcul retourne null.

Exemple d'utilisation :

// Utilisation de put
Map<String, Integer> countsPut = new HashMap<>();
countsPut.put("apple", 1);
countsPut.put("apple", 2); // Remplace 1 par 2

// Utilisation de compute pour incrémenter un compteur
Map<String, Integer> countsCompute = new HashMap<>();
countsCompute.compute("banana", (key, value) -> value == null ? 1 : value + 1); // banana sera 1
countsCompute.compute("banana", (key, value) -> value == null ? 1 : value + 1); // banana sera 2
countsCompute.compute("cherry", (key, value) -> null); // Supprime cherry s'il existait