Metoda Java HashMap computeIfPresent () izračuna novo vrednost in jo poveže z določenim ključem, če je ključ že prisoten v hashmapu.
Sintaksa computeIfPresent()
metode je:
hashmap.computeIfPresent(K key, BiFunction remappingFunction)
Tu je hashmap predmet HashMap
razreda.
Parametri computeIfPresent ()
computeIfPresent()
Postopek traja 2 parametrov:
- key - ključ, s katerim bo povezana izračunana vrednost
- remappingFunction - funkcija, ki izračuna novo vrednost za navedeni ključ
Opomba : Funkcija remappingFunction ima lahko dva argumenta. Zato velja za BiFunction.
computeIfPresent () Vrnjena vrednost
- vrne novo vrednost, povezano z navedenim ključem
- vrne,
null
če s ključem ni povezana nobena vrednost
Opomba : Če je rezultat remappingFunction rezultat null
, se preslikava za navedeni ključ odstrani.
Primer 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); ) )
Izhod
HashMap: (Hlače = 150, Torba = 300, Čevlji = 200) Cena čevljev po DDV: 220 Posodobljeno HashMap: (Hlače = 150, Torba = 300, Čevlji = 220))
V zgornjem primeru smo ustvarili hashmap z imenom cene. Upoštevajte izraz,
prices.computeIfPresent("Shoes", (key, value) -> value + value * 10/100)
Tukaj,
- (ključ, vrednost) -> vrednost + vrednost * 10/100 je lambda izraz. Izračuna novo vrednost Shoes in jo vrne. Če želite izvedeti več o lambda izrazu, obiščite Java Lambda Expressions.
- prices.computeIfPresent () poveže novo vrednost, ki jo vrne lambda izraz, v preslikavo za Čevlje. Možno je le, ker je Shoes že preslikana na vrednost v hashmapu.
Tukaj lambda izraz deluje kot funkcija preslikave. Potrebna sta dva parametra.
Opomba : computeIfPresent()
Metode ne moremo uporabiti, če ključ ni v hashmapu.
Priporočeno branje
- HashMap compute () - izračuna vrednost za navedeni ključ
- HashMap computeIfAbsent () - izračuna vrednost, če navedeni ključ ni preslikan v nobeno vrednost
- Java HashMap merge () - izvaja isto nalogo kot
compute()