Java HashMap computeIfPresent ()

Java HashMap computeIfPresent () -menetelmä laskee uuden arvon ja yhdistää sen määritettyyn avaimeen, jos avain on jo läsnä hashmapissa.

Menetelmän syntaksi computeIfPresent()on:

 hashmap.computeIfPresent(K key, BiFunction remappingFunction)

Tässä hashmap on HashMapluokan kohde.

computeIfPresent () -parametrit

computeIfPresent()Menetelmä kestää 2 parametrit:

  • avain - avain, johon laskettu arvo liitetään
  • remappingFunction - toiminto, joka laskee määritetyn avaimen uuden arvon

Huomautus : RemappingFunction-funktiossa voi olla kaksi argumenttia. Siksi pidetään BiFunction.

computeIfPresent () palautusarvo

  • palauttaa määritettyyn avaimeen liittyvän uuden arvon
  • palauttaa, nulljos avaimeen ei liity arvoa

Huomaa : Jos remappingFunction johtaa null, määritetyn avaimen kartoitus poistetaan.

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

Tuotos

 HashMap: (Housut = 150, Laukku = 300, Kengät = 200) Kenkien hinta alv: n jälkeen: 220 Päivitetty HashMap: (Housut = 150, Laukku = 300, Kengät = 220))

Yllä olevassa esimerkissä olemme luoneet hashmap-nimisen hinnan. Huomaa ilmaisu,

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

Tässä,

  • (avain, arvo) -> arvo + arvo * 10/100 on lambda-lauseke. Se laskee kengän uuden arvon ja palauttaa sen. Lisätietoja lambda-lausekkeesta on Java Lambda -lausekkeissa.
  • prices.computeIfPresent () yhdistää lambda-lausekkeen palauttaman uuden arvon kenkien kartoitukseen. Se on mahdollista vain, koska kengät on jo määritetty hashmap-arvoon.

Tässä lambda-lauseke toimii uudelleenkäynnistystoimintona. Ja se vaatii kaksi parametria.

Huomautus : Emme voi käyttää computeIfPresent()menetelmää, jos avainta ei ole hashmapissa.

Suositeltava lukeminen

  • HashMap compute () - laskee määritetyn avaimen arvon
  • HashMap computeIfAbsent () - laskee arvon, jos määritettyä avainta ei ole yhdistetty mihinkään arvoon
  • Java HashMap merge () - suorittaa saman tehtävän kuin compute()

Mielenkiintoisia artikkeleita...