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 HashMap
luokan 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,
null
jos 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()