Java HashMap computeIfPresent ()

Java HashMap computeIfPresent () metode aprēķina jaunu vērtību un saista to ar norādīto atslēgu, ja atslēga jau atrodas hashmap.

Metodes sintakse computeIfPresent()ir šāda:

 hashmap.computeIfPresent(K key, BiFunction remappingFunction)

Šeit hashmap ir HashMapklases objekts .

computeIfPresent () parametri

computeIfPresent()Metode ņem 2 parametri:

  • atslēga - atslēga, ar kuru jāsaista aprēķinātā vērtība
  • remappingFunction - funkcija, kas aprēķina norādītās atslēgas jauno vērtību

Piezīme . Funkcijai remappingFunk var būt divi argumenti. Tādējādi tiek uzskatīts par BiFunction.

computeIfPresent () atgriešanās vērtība

  • atgriež jauno vērtību, kas saistīta ar norādīto atslēgu
  • atgriež, nullja ar atslēgu nav saistīta vērtība

Piezīme . Ja rodas remappingFunction rezultāts null, norādītās atslēgas kartēšana tiek noņemta.

1. piemērs: 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); ) )

Rezultāts

 HashMap: (Pant = 150, Bag = 300, Shoes = 200) Kurpju cena pēc PVN: 220 Atjaunināts HashMap: (Pant = 150, Bag = 300, Shoes = 220))

Iepriekš minētajā piemērā mēs esam izveidojuši hashmap ar cenām. Ievērojiet izteicienu,

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

Šeit,

  • (atslēga, vērtība) -> vērtība + vērtība * 10/100 ir lambda izteiksme. Tas aprēķina apavu jauno vērtību un to atdod. Lai uzzinātu vairāk par lambda izteiksmi, apmeklējiet Java Lambda izteiksmes.
  • prices.computeIfPresent () jauno vērtību, ko atgriezusi lambda izteiksme, saista ar apavu kartēšanu. Tas ir iespējams tikai tāpēc, ka apavi jau ir kartēti ar vērtību hashmap.

Šeit lambda izteiksme darbojas kā pārkārtošanas funkcija. Tam nepieciešami divi parametri.

Piezīme . Mēs nevaram izmantot computeIfPresent()metodi, ja atslēgā nav hashmap.

Ieteicamā literatūra

  • HashMap compute () - aprēķina norādītās atslēgas vērtību
  • HashMap computeIfAbsent () - aprēķina vērtību, ja norādītā atslēga nav piesaistīta nevienai vērtībai
  • Java HashMap sapludināšana () - veic to pašu uzdevumu kā compute()

Interesanti raksti...