Java HashMap -laskenta ()

Java HashMap compute () -menetelmä laskee uuden arvon ja yhdistää sen hashmapissa määritettyyn avaimeen.

Menetelmän syntaksi compute()on:

 hashmap.compute(K key, BiFunction remappingFunction)

Tässä hashmap on HashMapluokan kohde.

laskea () parametrit

compute()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.

laske () palautusarvo

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

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

Esimerkki: HashMap laskee () uuden arvon lisäämiseksi

 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% discount int newPrice = prices.compute("Shoes", (key, value) -> value - value * 10/100); System.out.println("Discounted Price of Shoes: " + newPrice); // print updated HashMap System.out.println("Updated HashMap: " + prices); ) )

Tuotos

 HashMap: (Housut = 150, Laukku = 300, Kengät = 200) Alennettu hinta kengistä: 180 Päivitetty HashMap: (Housut = 150, Laukku = 300, Kengät = 180

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

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

Tässä,

  • (avain, arvo) -> arvo - arvo * 10/100 - Se on lambda-lauseke. Se vähentää kenkien vanhaa arvoa 10% ja palauttaa sen. Lisätietoja lambda-lausekkeesta on Java Lambda -lausekkeissa.
  • prices.compute () - Liittää lambda-lausekkeen palauttaman uuden arvon kenkien kartoitukseen.

Olemme käyttäneet lambda-lauseketta uudelleenparannustoimintona, joka rakeisee kaksi parametria.

Huomaa : Javan virallisen dokumentaation mukaan HashMap merge () -menetelmä on yksinkertaisempi kuin compute()menetelmä.

Suositeltava lukeminen

  • HashMap computeIfAbsent () - laskee arvon, jos määritettyä avainta ei ole yhdistetty mihinkään arvoon
  • HashMap computeIfPresent () - laskee arvon, jos määritetty avain on jo yhdistetty arvoon

Mielenkiintoisia artikkeleita...