Java HashMap computeIfAbsent ()

Java HashMapi meetod computeIfAbsent () arvutab uue väärtuse ja seob selle määratud võtmega, kui võti pole hashmapis ühegi väärtusega seotud.

Meetodi süntaks computeIfAbsent()on:

 hashmap.computeIfAbsent(K key, Function remappingFunction)

Siin on hashmap HashMapklassi objekt .

Parameetrid computeIfAbsent ()

computeIfAbsent()Meetod võtab 2 parameters:

  • võti - võti, millega arvutatav väärtus seostatakse
  • remappingFunction - funktsioon, mis arvutab määratud võtme uue väärtuse

Märkus . Ümberfunktsioonide funktsioon ei saa sisaldada kahte argumenti.

computeIfAbsent () tagastusväärtus

  • tagastab määratud võtmega seotud uue või vana väärtuse
  • tagastatakse, nullkui võtmega pole seotud väärtust

Märkus . Kui tulemuseks on funktsiooni remappingFunction null, eemaldatakse määratud võtme vastendamine .

Näide 1: Java HashMap computeIfAbsent ()

 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); // compute the value of Shirt int shirtPrice = prices.computeIfAbsent("Shirt", key -> 280); System.out.println("Price of Shirt: " + shirtPrice); // print updated HashMap System.out.println("Updated HashMap: " + prices); ) )

Väljund

 HashMap: (Pant = 150, kott = 300, kingad = 200) Särgi hind: 280 Uuendatud HashMap: (Pant = 150, särk = 280, kott = 300, kingad = 200)

Ülaltoodud näites oleme loonud hashmapi nimega hinnad. Pange tähele väljendit

 prices.computeIfAbsent("Shirt", key -> 280)

Siin,

  • võti -> 280 on lambda avaldis. See tagastab väärtuse 280. Lambda avaldise kohta lisateabe saamiseks külastage Java Lambda väljendeid.
  • prices.computeIfAbsent () seob lambda-avaldise abil tagastatud uue väärtuse särgi kaardistamisega. See on võimalik ainult seetõttu, et särk pole hashmapis juba ühegi väärtusega kaardistatud.

Näide 2: computeIfAbsent (), kui võti on juba olemas

 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", 180); prices.put("Bag", 300); prices.put("Pant", 150); System.out.println("HashMap: " + prices); // mapping for Shoes is already present // new value for Shoes is not computed int shoePrice = prices.computeIfAbsent("Shoes", (key) -> 280); System.out.println("Price of Shoes: " + shoePrice); // print updated HashMap System.out.println("Updated HashMap: " + prices); ) )

Väljund

 HashMap: (Pant = 150, kott = 300, kingad = 180) Kingade hind: 180 uuendatud HashMap: (Pant = 150, kott = 300, kingad = 180)

Ülaltoodud näites on kingade kaardistamine juba hashmapis olemas. Seega computeIfAbsent()ei arvuta meetod kingade uut väärtust.

Soovitatav lugemine

  • HashMap compute () - arvutab määratud võtme väärtuse
  • HashMap computeIfPresent () - arvutab väärtuse, kui määratud võti on juba väärtusega kaardistatud
  • Java HashMapi ühendamine () - täidab sama ülesannet nagu compute()

Huvitavad Artiklid...