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 HashMap
klases 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ž,
null
ja 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()