„Java HashMap“ „computeIfPresent“ ()

„Java HashMap“ metodas computeIfPresent () apskaičiuoja naują vertę ir susieja ją su nurodytu raktu, jei raktas jau yra maišos schemoje.

computeIfPresent()Metodo sintaksė yra tokia:

 hashmap.computeIfPresent(K key, BiFunction remappingFunction)

Čia hashmap yra klasės objektas HashMap.

„computeIfPresent ()“ parametrai

computeIfPresent()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 : „RemappingFunction“ gali turėti du argumentus. Vadinasi, laikoma „BiFunction“.

computeIfPresent () grąžinimo vertė

  • grąžina naują 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 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); ) )

Rezultatas

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

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

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

Čia

  • (raktas, reikšmė) -> reikšmė + reikšmė * 10/100 yra lambda išraiška. Tai apskaičiuoja naują „Shoes“ vertę ir ją grąžina. Norėdami sužinoti daugiau apie lambda išraišką, apsilankykite „Java Lambda Expressions“.
  • prices.computeIfPresent () susieja naują reikšmę, kurią grąžina lambda išraiška, su batų atvaizdavimu. Tai įmanoma tik todėl, kad „Shoes“ jau susieta su „hashmap“ verte.

Čia lambda išraiška veikia kaip pertvarkymo funkcija. Tam reikia dviejų parametrų.

Pastaba : Negalime naudoti computeIfPresent()metodo, jei rakto nėra hashmap'e.

Rekomenduojamas skaitymas

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

Įdomios straipsniai...