Συγχώνευση Java HashMap ()

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

Εάν το καθορισμένο κλειδί έχει ήδη συσχετιστεί με μια τιμή, η μέθοδος αντικαθιστά την παλιά τιμή με το αποτέλεσμα της καθορισμένης συνάρτησης.

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

 hashmap.merge(key, value, remappingFunction)

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

συγχώνευση () Παράμετροι

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

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

συγχώνευση () Τιμή επιστροφής

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

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

Παράδειγμα 1: Συγχώνευση HashMap () για εισαγωγή νέας καταχώρησης

 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); int returnedValue = prices.merge("Shirt", 100, (oldValue, newValue) -> oldValue + newValue); System.out.println("Price of Shirt: " + returnedValue); // print updated HashMap System.out.println("Updated HashMap: " + prices); ) )

Παραγωγή

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

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

 prices.merge("Shirt", 100, (oldValue, newValue) -> oldValue + newValue)

Εδώ, χρησιμοποιήσαμε την έκφραση λάμδα, (oldValue, newValue) -> oldValue + newValue)ως συνάρτηση αναδιατύπωσης. Για να μάθετε περισσότερα σχετικά με την έκφραση lambda, επισκεφθείτε το Java Lambda Expressions.

Δεδομένου ότι το κλειδί πουκάμισο δεν υπάρχει στις τιμές, η merge()μέθοδος εισάγει τη χαρτογράφηση Shirt=100. Και, το αποτέλεσμα από τη λειτουργία αναδιατύπωσης αγνοείται.

Παράδειγμα 2: Συγχώνευση HashMap () για εισαγωγή εισαγωγής με διπλό κλειδί

 import java.util.HashMap; class Main ( public static void main(String() args) ( // create an HashMap HashMap countries = new HashMap(); // insert entries to the HashMap countries.put("Washington", "America"); countries.put("Canberra", "Australia"); countries.put("Madrid", "Spain"); System.out.println("HashMap: " + countries); // merge mapping for key Washington String returnedValue = countries.merge("Washington", "USA", (oldValue, newValue) -> oldValue + "/" + newValue); System.out.println("Washington: " + returnedValue); // print updated HashMap System.out.println("Updated HashMap: " + countries); ) )

Παραγωγή

 HashMap: (Μαδρίτη = Ισπανία, Καμπέρα = Αυστραλία, Ουάσιγκτον = Αμερική) Ουάσιγκτον: Αμερική / ΗΠΑ Ενημερώθηκε HashMap: (Μαδρίτη = Ισπανία, Καμπέρα = Αυστραλία, Ουάσιγκτον = Αμερική / ΗΠΑ), 

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

 countries.merge("Washington", "USA", (oldValue, newValue) -> oldValue + "/" + newValue)

Εδώ, χρησιμοποιήσαμε την έκφραση λάμδα, (oldValue, newValue) -> oldValue + "/" + newValue)ως συνάρτηση αναδιατύπωσης.

Δεδομένου ότι το κλειδί Ουάσιγκτον είναι ήδη παρόν σε χώρες, η παλιά τιμή αντικαθίσταται από την τιμή που επιστρέφεται από τη λειτουργία αντιστοίχισης. Ως εκ τούτου, η χαρτογράφηση για την Ουάσιγκτον περιλαμβάνει αξία Αμερική / ΗΠΑ.

Παράδειγμα 3: Συγχώνευση HashMap () για συγχώνευση δύο HashMaps

 import java.util.HashMap; class Main ( public static void main(String() args) ( // create an HashMap HashMap prices1 = new HashMap(); // insert entries to the HashMap prices1.put("Pant", 230); prices1.put("Shoes", 350); System.out.println("HashMap 1: " + prices1); // create another hashmap HashMap prices2 = new HashMap(); //insert entries to the HashMap prices2.put("Shirt", 150); prices2.put("Shoes", 320); System.out.println("HashMap 2: " + prices2); // forEach() access each entries of prices2 // merge() inserts each entry from prices2 to prices1 prices2.forEach((key, value) -> prices1.merge(key, value, (oldValue, newValue) -> ( // return the smaller value if (oldValue < newValue) ( return oldValue; ) else ( return newValue; ) ))); System.out.println("Merged HashMap: " + prices1); ) )

Παραγωγή

 HashMap 1: (Παντελόνι = 230, Παπούτσια = 350) HashMap 2: (Πουκάμισο = 150, Παπούτσια = 320) Συγχωνευμένο HashMap: (Παντελόνι = 230, Πουκάμισο = 150, Παπούτσια = 320)

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

  prices2.forEach((key, value) -> prices1.merge(key, value, (oldValue, newValue) -> ( if (oldValue < newValue) ( return oldValue; ) else ( return newValue; ) )));

Εδώ, η μέθοδος HashMap forEach () αποκτά πρόσβαση σε κάθε καταχώριση των τιμών κατακερματισμού2 και τη συγχωνεύει με τις τιμές κατακερματισμού1. Έχουμε χρησιμοποιήσει δύο εκφράσεις λάμδα:

  • (κλειδί, τιμή) -> Rates.merge (…) - Έχει πρόσβαση σε κάθε καταχώριση των τιμών1 και τη μεταφέρει στη merge()μέθοδο.
  • (oldValue, newValue) -> (…) - Είναι μια συνάρτηση αναδιατύπωσης. Συγκρίνει δύο τιμές και επιστρέφει τη μικρότερη τιμή.

Δεδομένου ότι το κλειδί Παπούτσια υπάρχει και στον δύο κατακερματισμό, η τιμή του Παπούτσια αντικαθίσταται από το αποτέλεσμα της λειτουργίας επαναδιατύπωσης.

Java HashMap συγχώνευση () Vs. βάλτε όλα

Μπορούμε επίσης να χρησιμοποιήσουμε τη putAll()μέθοδο για τη συγχώνευση δύο κατακερματισμών. Ωστόσο, εάν υπάρχει ένα κλειδί και στους δύο κατακερματισμούς, η παλιά τιμή αντικαθίσταται από τη νέα τιμή.

Σε αντίθεση με το merge(), η putAll()μέθοδος δεν παρέχει τη λειτουργία αντιστοίχισης. Ως εκ τούτου, δεν μπορούμε να αποφασίσουμε τι αξία θα αποθηκεύσουμε για διπλά κλειδιά.

Για να μάθετε περισσότερα σχετικά με τη putAll()μέθοδο, επισκεφθείτε το Java HashMap putAll ().

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