Java HashMap computeIfAbsent ()

Java HashMap computeIfAbsent () metode aprēķina jaunu vērtību un saista to ar norādīto atslēgu, ja atslēga nav saistīta ar nevienu hashmap vērtību.

Metodes sintakse computeIfAbsent()ir šāda:

 hashmap.computeIfAbsent(K key, Function remappingFunction)

Šeit hashmap ir HashMapklases objekts .

computeIfAbsent () parametri

computeIfAbsent()Metode ņem 2 parametri:

  • atslēga - atslēga, ar kuru jāsaista aprēķinātā vērtība
  • remappingFunction - funkcija, kas aprēķina norādītās atslēgas jauno vērtību

Piezīme . Pārveidošanas funkcijai nevar būt divi argumenti.

computeIfAbsent () atgriešanās vērtība

  • atgriež jauno vai veco vērtību, kas saistīta ar norādīto atslēgu
  • atgriež, nullja ar atslēgu nav saistīta vērtība

Piezīme . Ja rodas remappingFunction rezultāts null, norādītās atslēgas kartēšana tiek noņemta.

1. piemērs: 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); ) )

Rezultāts

 HashMap: (Pant = 150, Bag = 300, Kurpes = 200) Krekla cena: 280 Atjaunināts HashMap: (Pant = 150, Krekls = 280, Bag = 300, Kurpes = 200)

Iepriekš minētajā piemērā mēs esam izveidojuši hashmap ar cenām. Ievērojiet izteicienu,

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

Šeit,

  • atslēga -> 280 ir lambda izteiksme. Tas atgriež vērtību 280. Lai uzzinātu vairāk par lambda izteiksmi, apmeklējiet Java Lambda izteiksmes.
  • prices.computeIfAbsent () jauno vērtību, ko atgriezusi lambda izteiksme, saista ar krekla kartēšanu. Tas ir iespējams tikai tāpēc, ka krekls hashmap jau nav piesaistīts nevienai vērtībai.

2. piemērs: computeIfAbsent (), ja atslēga jau ir

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

Rezultāts

 HashMap: (Pant = 150, Bag = 300, Shoes = 180) Kurpju cena: 180 Atjaunināts HashMap: (Pant = 150, Bag = 300, Kurpes = 180)

Iepriekš minētajā piemērā apavu kartēšana jau ir iekļauta hashmap. Tādējādi computeIfAbsent()metodē netiek aprēķināta apavu jaunā vērtība.

Ieteicamā literatūra

  • HashMap compute () - aprēķina norādītās atslēgas vērtību
  • HashMap computeIfPresent () - aprēķina vērtību, ja norādītā atslēga jau ir kartēta uz vērtību
  • Java HashMap sapludināšana () - veic to pašu uzdevumu kā compute()

Interesanti raksti...