Java HashMap computeIfAbsent () -metoden beräknar ett nytt värde och associerar det med den angivna nyckeln om nyckeln inte är associerad med något värde i hashmap.
Syntaxen för computeIfAbsent()
metoden är:
hashmap.computeIfAbsent(K key, Function remappingFunction)
Här är hashmap ett objekt i HashMap
klassen.
computeIfAbsent () -parametrar
Den computeIfAbsent()
metod tar 2 parametrar:
- nyckel - nyckel som det beräknade värdet ska associeras med
- remappingFunction - funktion som beräknar det nya värdet för den angivna nyckeln
Obs! Omfunktionsfunktionen kan inte ta två argument.
computeIfAbsent () Returvärde
- returnerar det nya eller gamla värdet som är associerat med den angivna nyckeln
- returnerar
null
om inget värde är associerat med nyckeln
Obs : Om resultat av remappingFunction tas bort tas null
mappningen för den angivna nyckeln bort.
Exempel 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); ) )
Produktion
HashMap: (Byxa = 150, väska = 300, skor = 200) Pris på skjorta: 280 Uppdaterad HashMap: (Byxa = 150, skjorta = 280, väska = 300, skor = 200)
I exemplet ovan har vi skapat en hashmap med namnet priser. Lägg märke till uttrycket,
prices.computeIfAbsent("Shirt", key -> 280)
Här,
- nyckel -> 280 är ett lambdauttryck. Det returnerar värdet 280. För att lära dig mer om lambdauttrycket, besök Java Lambda Expressions.
- prices.computeIfAbsent () kopplar det nya värdet som returneras av lambdauttryck till kartläggningen för Shirt. Det är bara möjligt eftersom tröjan redan inte är mappad till något värde i hashmap.
Exempel 2: computeIfAbsent () om nyckeln redan finns
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); ) )
Produktion
HashMap: (Pant = 150, Bag = 300, Shoes = 180) Pris på skor: 180 Uppdaterat HashMap: (Pant = 150, Bag = 300, Shoes = 180)
I exemplet ovan är kartläggningen för skor redan närvarande i hashmappen. Därför computeIfAbsent()
beräknar metoden inte det nya värdet för skor.
Rekommenderad läsning
- HashMap beräkna () - beräknar värdet för den angivna nyckeln
- HashMap computeIfPresent () - beräknar värdet om den angivna nyckeln redan är mappad till ett värde
- Java HashMap merge () - utför samma uppgift som
compute()