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 HashMap
classe.
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
null
se 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()