„Java HashMap computeIfAbsent“ ()

„Java HashMap“ metodas „computeIfAbsent ()“ apskaičiuoja naują reikšmę ir susieja ją su nurodytu raktu, jei raktas nėra susietas su jokia „hashmap“ reikšme.

computeIfAbsent()Metodo sintaksė yra tokia:

 hashmap.computeIfAbsent(K key, Function remappingFunction)

Čia hashmap yra klasės objektas HashMap.

Parametrai „computeIfAbsent ()“

computeIfAbsent()Metodas trunka 2 parametrus:

  • raktas - raktas, su kuriuo turi būti susieta apskaičiuota vertė
  • remappingFunction - funkcija, kuri apskaičiuoja naują nurodyto rakto vertę

Pastaba : pakartotinio keitimo funkcija negali būti dviejų argumentų.

computeIfAbsent () grąžinimo vertė

  • grąžina naują arba seną reikšmę, susietą su nurodytu raktu
  • grąžinama, nulljei nėra jokios vertės, susijusios su raktu

Pastaba : Jei gaunama „remappingFunction“ funkcija null, nurodyto rakto susiejimas pašalinamas.

1 pavyzdys: 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); ) )

Rezultatas

 „HashMap“: (kelnaitės = 150, krepšys = 300, batai = 200) marškinėlių kaina: 280 atnaujinta „HashMap“: (kelnaitės = 150, marškinėliai = 280, krepšys = 300, batai = 200)

Ankstesniame pavyzdyje mes sukūrėme hashmap pavadinimu kainos. Atkreipkite dėmesį į išraišką,

 prices.computeIfAbsent("Shirt", key -> 280)

Čia

  • raktas -> 280 yra lambda išraiška. Ji grąžina vertę 280. Norėdami sužinoti daugiau apie lambda išraišką, apsilankykite „Java Lambda Expressions“.
  • prices.computeIfAbsent () susieja naują reikšmę, kurią grąžina lambda išraiška, į marškinių atvaizdavimą. Tai įmanoma tik todėl, kad marškinėliai dar nėra priskirti jokiai reikšmei hashmap.

2 pavyzdys: computeIfAbsent (), jei raktas jau yra

 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); ) )

Rezultatas

 HashMap: (Kelnaitės = 150, Krepšys = 300, Batai = 180) Batų kaina: 180 Atnaujinta „HashMap“: (Kelnaitės = 150, Krepšys = 300, Batai = 180)

Ankstesniame pavyzdyje batų atvaizdavimas jau yra hashmap. Taigi computeIfAbsent()metodas neapskaičiuoja naujos „Shoes“ vertės.

Rekomenduojamas skaitymas

  • HashMap compute () - apskaičiuoja nurodyto rakto vertę
  • „HashMap“ computeIfPresent () - apskaičiuoja vertę, jei nurodytas raktas jau yra susietas su verte
  • Java HashMap sulieti () - atlieka tą pačią užduotį kaip ir compute()

Įdomios straipsniai...