Java HashMap (με παραδείγματα)

Σε αυτό το σεμινάριο, θα μάθουμε για την τάξη Java HashMap και τις διάφορες λειτουργίες της με τη βοήθεια παραδειγμάτων.

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

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

Η HashMapτάξη εφαρμόζει τη διασύνδεση χάρτη.

Εφαρμογή Java HashMap

Δημιουργήστε ένα HashMap

Για να δημιουργήσουμε έναν κατακερματισμό χάρτη, πρέπει java.util.HashMapπρώτα να εισαγάγουμε το πακέτο. Μόλις εισαγάγουμε το πακέτο, εδώ είναι πώς μπορούμε να δημιουργήσουμε hashmaps στην Java.

 // hashMap creation with 8 capacity and 0.6 load factor HashMap numbers = new HashMap();

Στον παραπάνω κώδικα, έχουμε δημιουργήσει ένα hashmap με όνομα. Εδώ, το K αντιπροσωπεύει τον τύπο κλειδιού και το V αντιπροσωπεύει τον τύπο τιμών. Για παράδειγμα,

 HashMap numbers = new HashMap();

Εδώ, ο τύπος των κλειδιών είναι Stringκαι ο τύπος των τιμών είναι Integer.

Παράδειγμα 1: Δημιουργία HashMap στην Java

 import java.util.HashMap; class Main ( public static void main(String() args) ( // create a hashmap HashMap languages = new HashMap(); // add elements to hashmap languages.put("Java", 8); languages.put("JavaScript", 1); languages.put("Python", 3); System.out.println("HashMap: " + languages); ) )

Παραγωγή

 HashMap: (Java = 8, JavaScript = 1, Python = 3)

Στο παραπάνω παράδειγμα, δημιουργήσαμε HashMapονομαστικές γλώσσες.

Εδώ, χρησιμοποιήσαμε τη put()μέθοδο για την προσθήκη στοιχείων στο hashmap. Θα μάθουμε περισσότερα για τη put()μέθοδο αργότερα σε αυτό το σεμινάριο.

Βασικές λειτουργίες στο Java HashMap

Η HashMapτάξη παρέχει διάφορες μεθόδους για την εκτέλεση διαφορετικών λειτουργιών σε κατακερματισμούς. Σε αυτό το σεμινάριο θα εξετάσουμε μερικές κοινές λειτουργίες λίστας συστοιχιών:

  • Προσθέστε στοιχεία
  • Στοιχεία πρόσβασης
  • Αλλαγή στοιχείων
  • Αφαιρέστε τα στοιχεία

1. Προσθέστε στοιχεία σε ένα HashMap

Για να προσθέσουμε ένα στοιχείο στο hashmap, χρησιμοποιούμε τη put()μέθοδο της HashMapκλάσης. Για παράδειγμα,

 import java.util.HashMap; class Main ( public static void main(String() args) ( // create a hashmap HashMap numbers = new HashMap(); System.out.println("Initial HashMap: " + numbers); // put() method to add elements numbers.put("One", 1); numbers.put("Two", 2); numbers.put("Three", 3); System.out.println("HashMap after put(): " + numbers); ) )

Παραγωγή

 Αρχικό HashMap: () HashMap μετά το put (): (One = 1, Two = 2, Three = 3)

Στο παραπάνω παράδειγμα, έχουμε δημιουργήσει ένα HashMapόνομα με αριθμούς. Εδώ, χρησιμοποιήσαμε τη put()μέθοδο για την προσθήκη στοιχείων σε αριθμούς.

Παρατηρήστε τη δήλωση,

 numbers.put("One", 1);

Εδώ, μεταβιβάζουμε την Stringτιμή One ως κλειδί και την Integerτιμή 1 ως τιμή στη put()μέθοδο.

Προτεινόμενες αναγνώσεις

  • Java HashMap put ()
  • Java HashMap putAll ()
  • Java HashMap putIfAbsent ()

2. Πρόσβαση στα στοιχεία HashMap

Μπορούμε να χρησιμοποιήσουμε τη get()μέθοδο για πρόσβαση στην τιμή από το hashmap. Για παράδειγμα,

 import java.util.HashMap; class Main ( public static void main(String() args) ( HashMap languages = new HashMap(); languages.put(1, "Java"); languages.put(2, "Python"); languages.put(3, "JavaScript"); System.out.println("HashMap: " + languages); // get() method to get value String value = languages.get(1); System.out.println("Value at index 1: " + value); ) )

Παραγωγή

 HashMap: (1 = Java, 2 = Python, 3 = JavaScript) Τιμή στο ευρετήριο 1: Java

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

 languages.get(1);

Εδώ, η get()μέθοδος παίρνει το κλειδί ως όρισμα και επιστρέφει την αντίστοιχη τιμή που σχετίζεται με το κλειδί.

Μπορούμε, επίσης, να έχουν πρόσβαση στα κλειδιά , τις αξίες , και το κλειδί / τιμή ζευγάρια του HashMap τις απόψεις σύνολο χρήση keySet(), values()και entrySet()μεθόδους αντίστοιχα. Για παράδειγμα,

 import java.util.HashMap; class Main ( public static void main(String() args) ( HashMap languages = new HashMap(); languages.put(1, "Java"); languages.put(2, "Python"); languages.put(3, "JavaScript"); System.out.println("HashMap: " + languages); // return set view of keys // using keySet() System.out.println("Keys: " + languages.keySet()); // return set view of values // using values() System.out.println("Values: " + languages.values()); // return set view of key/value pairs // using entrySet() System.out.println("Key/Value mappings: " + languages.entrySet()); ) )

Παραγωγή

 HashMap: (1 = Java, 2 = Python, 3 = JavaScript) Πλήκτρα: (1, 2, 3) Τιμές: (Java, Python, JavaScript) Αντιστοίχιση κλειδιών / τιμών: (1 = Java, 2 = Python, 3 = JavaScript )

Στο παραπάνω παράδειγμα, έχουμε δημιουργήσει ένα κατακερματισμένο με όνομα γλώσσες. Εδώ, έχουμε πρόσβαση στα κλειδιά , τις τιμές και τις αντιστοιχίσεις κλειδιών / τιμών από το hashmap.

Προτεινόμενες αναγνώσεις

  • Java HashMap get ()
  • Java Hashmap getOrDefault ()
  • Java HashMap KeySet ()
  • Τιμές Java HashMap ()
  • Καταχώριση Java HashMapSet ()

3. Αλλαγή τιμής HashMap

Μπορούμε να χρησιμοποιήσουμε τη replace()μέθοδο για να αλλάξουμε την τιμή που σχετίζεται με ένα κλειδί σε έναν κατακερματισμό. Για παράδειγμα,

 import java.util.HashMap; class Main ( public static void main(String() args) ( HashMap languages = new HashMap(); languages.put(1, "Java"); languages.put(2, "Python"); languages.put(3, "JavaScript"); System.out.println("Original HashMap: " + languages); // change element with key 2 languages.replace(2, "C++"); System.out.println("HashMap using replace(): " + languages); ) )

Παραγωγή

 Πρωτότυπο HashMap: (1 = Java, 2 = Python, 3 = JavaScript) HashMap χρησιμοποιώντας αντικατάσταση (): (1 = Java, 2 = C ++, 3 = JavaScript)

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

 languages.replace(2, "C++");

Εδώ, αλλάζουμε την τιμή που αναφέρεται στο κλειδί 2 με τη νέα τιμή C ++.

Η HashMapτάξη παρέχει επίσης ορισμένες παραλλαγές της replace()μεθόδου. Για να μάθετε περισσότερα, επισκεφτείτε το

  • Αντικατάσταση Java HashMap ()
  • Java HashMap αντικατάσταση Όλα ()

4. Καταργήστε τα στοιχεία HashMap

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

 import java.util.HashMap; class Main ( public static void main(String() args) ( HashMap languages = new HashMap(); languages.put(1, "Java"); languages.put(2, "Python"); languages.put(3, "JavaScript"); System.out.println("HashMap: " + languages); // remove element associated with key 2 String value = languages.remove(2); System.out.println("Removed value: " + value); System.out.println("Updated HashMap: " + languages); ) )

Παραγωγή

 HashMap: (1 = Java, 2 = Python, 3 = JavaScript) Καταργημένη τιμή: Python Ενημερώθηκε HashMap: (1 = Java, 3 = JavaScript)

Εδώ, η remove()μέθοδος παίρνει το κλειδί ως παράμετρος. Στη συνέχεια επιστρέφει την τιμή που σχετίζεται με το κλειδί και καταργεί την καταχώριση .

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

 remove(2, "C++");

Εδώ, η remove()μέθοδος καταργεί την καταχώριση μόνο εάν το κλειδί 2 σχετίζεται με την τιμή C ++ . Επειδή το 2 δεν σχετίζεται με το C ++ , δεν καταργεί την καταχώριση.

Για να μάθετε περισσότερα, επισκεφθείτε το Java HashMap remove ().

Άλλες μέθοδοι του HashMap

Μέθοδος Περιγραφή
Σαφή() αφαιρεί όλες τις αντιστοιχίσεις από το HashMap
υπολογίζω() υπολογίζει μια νέα τιμή για το καθορισμένο κλειδί
computeIfAbsent () υπολογίζει την τιμή εάν δεν υπάρχει αντιστοίχιση για το κλειδί
computeIfPresent () υπολογίζει μια τιμή χαρτογράφησης εάν υπάρχει το κλειδί
συγχώνευση() συγχωνεύει την καθορισμένη χαρτογράφηση στο HashMap
κλώνος () φτιάχνει το αντίγραφο του HashMap
περιέχειKey () ελέγχει εάν το καθορισμένο κλειδί υπάρχει στο Hashmap
περιέχει τιμή () ελέγχει εάν Hashmapπεριέχει την καθορισμένη τιμή
Μέγεθος() επιστρέφει τον αριθμό των αντικειμένων στο HashMap
είναι άδειο() checks if the Hashmap is empty

Iterate through a HashMap

To iterate through each entry of the hashmap, we can use Java for-each loop. We can iterate through keys only, vales only, and key/value mapping. For example,

 import java.util.HashMap; import java.util.Map.Entry; class Main ( public static void main(String() args) ( // create a HashMap HashMap languages = new HashMap(); languages.put(1, "Java"); languages.put(2, "Python"); languages.put(3, "JavaScript"); System.out.println("HashMap: " + languages); // iterate through keys only System.out.print("Keys: "); for (Integer key : languages.keySet()) ( System.out.print(key); System.out.print(", "); ) // iterate through values only System.out.print("Values: "); for (String value : languages.values()) ( System.out.print(value); System.out.print(", "); ) // iterate through key/value entries System.out.print("Entries: "); for (Entry entry : languages.entrySet()) ( System.out.print(entry); System.out.print(", "); ) ) )

Output

 HashMap: (1=Java, 2=Python, 3=JavaScript) Keys: 1, 2, 3, Values: Java, Python, JavaScript, Entries: 1=Java, 2=Python, 3=JavaScript,

Note that we have used the Map.Entry in the above example. It is the nested class of the Map interface that returns a view (elements) of the map.

We first need to import the java.util.Map.Entry package in order to use this class.

This nested class returns a view (elements) of the map.

Creating HashMap from Other Maps

In Java, we can also create a hashmap from other maps. For example,

 import java.util.HashMap; import java.util.TreeMap; class Main ( public static void main(String() args) ( // create a treemap TreeMap evenNumbers = new TreeMap(); evenNumbers.put("Two", 2); evenNumbers.put("Four", 4); System.out.println("TreeMap: " + evenNumbers); // create hashmap from the treemap HashMap numbers = new HashMap(evenNumbers); numbers.put("Three", 3); System.out.println("HashMap: " + numbers); ) )

Output

 TreeMap: (Four=4, Two=2) HashMap: (Two=2, Three=3, Four=4)

In the above example, we have created a TreeMap named evenNumbers. Notice the expression,

 numbers = new HashMap(evenNumbers)

Here, we are creating a HashMap named numbers using the TreeMap. To learn more about treemap, visit Java TreeMap.

Note: While creating a hashmap, we can include optional parameters: capacity and load factor. For example,

 HashMap numbers = new HashMap(8, 0.6f);

Here,

  • 8 (capacity is 8) - This means it can store 8 entries.
  • 0.6f (load factor is 0.6) - This means whenever our hash table is filled by 60%, the entries are moved to a new hash table double the size of the original hash table.

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

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