Σε αυτό το σεμινάριο, θα μάθουμε για την τάξη Java HashMap και τις διάφορες λειτουργίες της με τη βοήθεια παραδειγμάτων.
Η 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 .