Java HashMap computeIfPresent ()

Java HashMapi meetod computeIfPresent () arvutab uue väärtuse ja seob selle määratud võtmega, kui võti on hashmapis juba olemas.

Meetodi süntaks computeIfPresent()on:

 hashmap.computeIfPresent(K key, BiFunction remappingFunction)

Siin on hashmap HashMapklassi objekt .

Parameetrid computeIfPresent ()

computeIfPresent()Meetod võtab 2 parameters:

  • võti - võti, millega arvutatav väärtus seostatakse
  • remappingFunction - funktsioon, mis arvutab määratud võtme uue väärtuse

Märkus . RemappingFunction võib võtta kaks argumenti. Seega peetakse seda BiFunctioniks.

computeIfPresent () tagastusväärtus

  • tagastab määratud võtmega seotud uue väärtuse
  • tagastatakse, nullkui võtmega pole seotud väärtust

Märkus . Kui tulemuseks on funktsiooni remappingFunction null, eemaldatakse määratud võtme vastendamine .

Näide 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); ) )

Väljund

 HashMap: (Pant = 150, kott = 300, kingad = 200) Kingade hind pärast käibemaksu: 220 uuendatud HashMap: (Pant = 150, kott = 300, kingad = 220))

Ülaltoodud näites oleme loonud hashmapi nimega hinnad. Pange tähele väljendit

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

Siin,

  • (võti, väärtus) -> väärtus + väärtus * 10/100 on lambda avaldis. See arvutab kingade uue väärtuse ja tagastab selle. Lambda väljendi kohta lisateabe saamiseks külastage Java Lambda väljendeid.
  • prices.computeIfPresent () seob lambda väljendiga tagastatud uue väärtuse kingade kaardistamisega. See on võimalik ainult seetõttu, et Shoes on juba hashmapis olevale väärtusele kaardistatud.

Siin toimib lambda väljend ümberarvestusfunktsioonina. Ja selleks on vaja kahte parameetrit.

Märkus . Me ei saa seda computeIfPresent()meetodit kasutada, kui võtit hashmapis pole.

Soovitatav lugemine

  • HashMap compute () - arvutab määratud võtme väärtuse
  • HashMap computeIfAbsent () - arvutab väärtuse, kui määratud võti pole ühegi väärtusega vastendatud
  • Java HashMapi ühendamine () - täidab sama ülesannet nagu compute()

Huvitavad Artiklid...