Java HashMap computeIfPresent ()

Η μέθοδος Java HashMap computeIfPresent () υπολογίζει μια νέα τιμή και τη συσχετίζει με το καθορισμένο κλειδί εάν το κλειδί υπάρχει ήδη στο hashmap.

Η σύνταξη της computeIfPresent()μεθόδου είναι:

 hashmap.computeIfPresent(K key, BiFunction remappingFunction)

Εδώ, το hashmap είναι ένα αντικείμενο της HashMapτάξης.

παράμετροι computeIfPresent ()

Η computeIfPresent()μέθοδος παίρνει 2 παραμέτρους:

  • key - key με το οποίο θα υπολογιστεί η υπολογισμένη τιμή
  • remappingFunction - λειτουργία που υπολογίζει τη νέα τιμή για το καθορισμένο κλειδί

Σημείωση : Το remappingFunction μπορεί να λάβει δύο ορίσματα. Ως εκ τούτου, θεωρείται ως Δυσλειτουργία.

τιμή επιστροφής computeIfPresent ()

  • επιστρέφει τη νέα τιμή που σχετίζεται με το καθορισμένο κλειδί
  • επιστρέφει nullεάν καμία τιμή δεν σχετίζεται με το κλειδί

Σημείωση : Εάν τα αποτελέσματα του remappingFunction καταργηθούν null, τότε η αντιστοίχιση για το καθορισμένο κλειδί καταργείται.

Παράδειγμα 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); ) )

Παραγωγή

 HashMap: (Παντελόνι = 150, Τσάντα = 300, Παπούτσια = 200) Τιμή παπουτσιών μετά τον ΦΠΑ: 220 Ενημερωμένο HashMap: (Παντελόνι = 150, Τσάντα = 300, Παπούτσια = 220))

Στο παραπάνω παράδειγμα, δημιουργήσαμε έναν κατακερματισμό με τις τιμές. Παρατηρήστε την έκφραση,

 prices.computeIfPresent("Shoes", (key, value) -> value + value * 10/100)

Εδώ,

  • (κλειδί, τιμή) -> τιμή + τιμή * 10/100 είναι μια έκφραση λάμδα. Υπολογίζει τη νέα αξία των παπουτσιών και την επιστρέφει. Για να μάθετε περισσότερα σχετικά με την έκφραση lambda, επισκεφθείτε το Java Lambda Expressions.
  • Το harga.computeIfPresent () συσχετίζει τη νέα τιμή που επέστρεψε με την έκφραση lambda στη χαρτογράφηση για παπούτσια. Είναι δυνατό μόνο επειδή τα παπούτσια έχουν ήδη αντιστοιχιστεί σε μια τιμή στο hashmap.

Εδώ, η έκφραση λάμδα λειτουργεί ως λειτουργία αναδιατύπωσης. Και, χρειάζονται δύο παραμέτρους.

Σημείωση : Δεν μπορούμε να χρησιμοποιήσουμε τη computeIfPresent()μέθοδο εάν το κλειδί δεν υπάρχει στο hashmap.

Συνιστώμενη ανάγνωση

  • HashMap compute () - υπολογίζει την τιμή για το καθορισμένο κλειδί
  • HashMap computeIfAbsent () - υπολογίζει την τιμή εάν το καθορισμένο κλειδί δεν αντιστοιχιστεί σε καμία τιμή
  • Java HashMap merge () - εκτελεί την ίδια εργασία με compute()

ενδιαφέροντα άρθρα...