Java HashMap computeIfAbsent ()

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 HashMapklassen.

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 nullom inget värde är associerat med nyckeln

Obs : Om resultat av remappingFunction tas bort tas nullmappningen 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()

Intressanta artiklar...