Java HashMap computeIfPresent ()

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 HashMaprazreda.

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

Zanimive Članki...