Java HashMap computeIfPresent ()

Il metodo computeIfPresent () di Java HashMap calcola un nuovo valore e lo associa alla chiave specificata se la chiave è già presente nella hashmap.

La sintassi del computeIfPresent()metodo è:

 hashmap.computeIfPresent(K key, BiFunction remappingFunction)

In questo caso, hashmap è un oggetto della HashMapclasse.

parametri computeIfPresent ()

Il computeIfPresent()metodo richiede 2 parametri:

  • chiave - chiave a cui associare il valore calcolato
  • remappingFunction - funzione che calcola il nuovo valore per la chiave specificata

Nota : la funzione remapping può richiedere due argomenti. Quindi, considerato come BiFunction.

computeIfPresent () Valore restituito

  • restituisce il nuovo valore associato alla chiave specificata
  • restituisce nullse nessun valore è associato alla chiave

Nota : se si ottiene remappingFunction null, la mappatura per la chiave specificata viene rimossa.

Esempio 1: Java HashMap computeIfPresent ()

 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); // recompute the value of Shoes with 10% VAT int shoesPrice = prices.computeIfPresent("Shoes", (key, value) -> value + value * 10/100); System.out.println("Price of Shoes after VAT: " + shoesPrice); // print updated HashMap System.out.println("Updated HashMap: " + prices); ) )

Produzione

 HashMap: (Pant = 150, Bag = 300, Shoes = 200) Prezzo delle scarpe al netto dell'IVA: 220 HashMap aggiornata: (Pant = 150, Bag = 300, Shoes = 220))

Nell'esempio sopra, abbiamo creato una hashmap denominata prezzi. Notare l'espressione,

 prices.computeIfPresent("Shoes", (key, value) -> value + value * 10/100)

Qui,

  • (chiave, valore) -> valore + valore * 10/100 è un'espressione lambda. Calcola il nuovo valore di Shoes e lo restituisce. Per ulteriori informazioni sull'espressione lambda, visita Java Lambda Expressions.
  • prices.computeIfPresent () associa il nuovo valore restituito dall'espressione lambda alla mappatura per Shoes. È possibile solo perché Shoes è già mappato su un valore nella hashmap.

In questo caso, l'espressione lambda funge da funzione di rimappatura. E ci vogliono due parametri.

Nota : non possiamo utilizzare il computeIfPresent()metodo se la chiave non è presente nella hashmap.

Lettura consigliata

  • HashMap compute (): calcola il valore per la chiave specificata
  • HashMap computeIfAbsent () - calcola il valore se la chiave specificata non è mappata su alcun valore
  • Java HashMap merge (): esegue la stessa attività di compute()

Articoli interessanti...