Η μέθοδος Java HashMap computeIfAbsent () υπολογίζει μια νέα τιμή και τη συσχετίζει με το καθορισμένο κλειδί, εάν το κλειδί δεν σχετίζεται με καμία τιμή στο hashmap.
Η σύνταξη της computeIfAbsent()
μεθόδου είναι:
hashmap.computeIfAbsent(K key, Function remappingFunction)
Εδώ, το hashmap είναι ένα αντικείμενο της HashMap
τάξης.
παράμετροι computeIfAbsent ()
Η computeIfAbsent()
μέθοδος παίρνει 2 παραμέτρους:
- key - key με το οποίο θα υπολογιστεί η υπολογισμένη τιμή
- remappingFunction - λειτουργία που υπολογίζει τη νέα τιμή για το καθορισμένο κλειδί
Σημείωση : Η συνάρτηση αναδιατύπωσης δεν μπορεί να λάβει δύο ορίσματα.
τιμή επιστροφής computeIfAbsent ()
- επιστρέφει τη νέα ή παλιά τιμή που σχετίζεται με το καθορισμένο κλειδί
- επιστρέφει
null
εάν καμία τιμή δεν σχετίζεται με το κλειδί
Σημείωση : Εάν τα αποτελέσματα του remappingFunction καταργηθούν null
, τότε η αντιστοίχιση για το καθορισμένο κλειδί καταργείται.
Παράδειγμα 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); ) )
Παραγωγή
HashMap: (Παντελόνι = 150, Τσάντα = 300, Παπούτσια = 200) Τιμή πουκάμισου: 280 Ενημερωμένο HashMap: (Παντελόνι = 150, Πουκάμισο = 280, Τσάντα = 300, Παπούτσια = 200)
Στο παραπάνω παράδειγμα, δημιουργήσαμε έναν κατακερματισμό με τις τιμές. Παρατηρήστε την έκφραση,
prices.computeIfAbsent("Shirt", key -> 280)
Εδώ,
- το κλειδί -> 280 είναι μια έκφραση λάμδα. Επιστρέφει την τιμή 280. Για να μάθετε περισσότερα σχετικά με την έκφραση lambda, επισκεφθείτε το Java Lambda Expressions.
- Τιμές.computeIfAbsent () συσχετίζει τη νέα τιμή που επέστρεψε από την έκφραση lambda στη χαρτογράφηση για το πουκάμισο. Είναι δυνατό μόνο επειδή το πουκάμισο δεν έχει ήδη αντιστοιχιστεί σε καμία τιμή στο hashmap.
Παράδειγμα 2: 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", 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); ) )
Παραγωγή
HashMap: (Παντελόνι = 150, Τσάντα = 300, Παπούτσια = 180) Τιμή παπουτσιών: 180 Ενημερωμένο HashMap: (Παντελόνι = 150, Τσάντα = 300, Παπούτσια = 180)
Στο παραπάνω παράδειγμα, η αντιστοίχιση για παπούτσια υπάρχει ήδη στο hashmap. Ως εκ τούτου, η computeIfAbsent()
μέθοδος δεν υπολογίζει τη νέα τιμή για τα παπούτσια.
Συνιστώμενη ανάγνωση
- HashMap compute () - υπολογίζει την τιμή για το καθορισμένο κλειδί
- HashMap computeIfPresent () - υπολογίζει την τιμή εάν το καθορισμένο κλειδί έχει ήδη αντιστοιχιστεί σε μια τιμή
- Java HashMap merge () - εκτελεί την ίδια εργασία με
compute()