Ένας HashMap (ή ένας HashTable) είναι μια δομή δεδομένων που επιτρέπει γρήγορη πρόσβαση σε δεδομένα χρησιμοποιώντας ζεύγη κλειδιών-τιμών. Η κλάση Java HashMap επεκτείνει το AbstractMap class και υλοποιεί τη διεπαφή χάρτη, η οποία του δίνει πρόσβαση σε πολλές λειτουργίες. Τα HashMaps έχουν δύο παραμέτρους τύπου — K και V, όπου το K αποθηκεύει τα κλειδιά και το V αποθηκεύει τις τιμές σε κάθε HashMap.

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

Δημιουργία Java HashMap

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

εισαγωγήΙάβα.χρήσιμο.HashMap;
δημόσιοτάξηΚύριος{
δημόσιοστατικόςκενόςκύριος(String[] args){
//δημιουργώντας ένα HashMap
HashMap<Ακέραιος, συμβολοσειρά> fruitsMap = νέο HashMap<Ακέραιος, συμβολοσειρά>();
}
}
instagram viewer

ο Κλάση Java παραπάνω χρησιμοποιεί τον προεπιλεγμένο κατασκευαστή HashMap για να δημιουργήσει μια δομή δεδομένων που ονομάζεται φρούταΧάρτης. Το αντικείμενο fruitsMap θα αποθηκεύσει δεδομένα που έχουν ένα ακέραιο κλειδί και μια τιμή συμβολοσειράς. Ωστόσο, δεδομένου ότι η κλάση HashMap υλοποιεί τη διεπαφή χάρτη, μπορεί να αποθηκεύσει μια μηδενική τιμή είτε στο πεδίο κλειδιού, στο πεδίο τιμών ή και στα δύο.

Αποθήκευση δεδομένων σε HashMap

Μπορείτε να εκτελέσετε πολλές λειτουργίες χρησιμοποιώντας την κλάση HashMap. ο put (κλειδί K, τιμή V) Η μέθοδος είναι από τις πιο δημοφιλείς μεθόδους της και σας επιτρέπει να αποθηκεύετε δεδομένα χρησιμοποιώντας ένα ζεύγος κλειδιού-τιμής, όπου κάθε κλειδί αντιστοιχίζεται σε μια τιμή.

εισαγωγήΙάβα.χρήσιμο.HashMap;
δημόσιοτάξηΚύριος{
δημόσιοστατικόςκενόςκύριος(String[] args){
//δημιουργώντας ένα HashMap
HashMap<Ακέραιος, συμβολοσειρά> fruitsMap = νέο HashMap<Ακέραιος, συμβολοσειρά>();
//προσθήκη στοιχείων στο HashMap
fruitsMap.put (3,"Αχλάδι");
fruitsMap.put (6,"Μάνγκο");
fruitsMap.put (7,"Δαμάσκηνο");
fruitsMap.put (4,"μήλο");
fruitsMap.put (1,"Πορτοκάλι");
fruitsMap.put (5,"Μούρα");
fruitsMap.put (2,"Πεπόνι");
}
}

Η παραπάνω ενημερωμένη κλάση χρησιμοποιεί τη μέθοδο put() για να προσθέσει πολλά φρούτα και το κλειδί τους στην υπάρχουσα δομή δεδομένων fruitsMap. Είναι σημαντικό να σημειωθεί ότι ο παραπάνω κώδικας προσθέτει τα δεδομένα στον χάρτη τυχαία. Αυτή η λεπτομέρεια θα σας φανεί χρήσιμη όταν αρχίσετε να διαβάζετε τα δεδομένα από το HashMap.

Ανάγνωση δεδομένων από HashMap

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

Ανακτήστε το αντικείμενο HashMap

Εάν θέλετε να ανακτήσετε τα δεδομένα ως αντικείμενο, μπορείτε απλά να αποκτήσετε πρόσβαση στο αντικείμενο HashMap, το οποίο στο παρακάτω παράδειγμα είναι το fruitsMap.

//Προβολή όλων των στοιχείων ως αντικείμενο
Σύστημα.έξω.println(φρούταΧάρτης);

Προσθέτοντας την παραπάνω γραμμή κώδικα στην κλάση Main, εκτυπώνεται η ακόλουθη έξοδος στην κονσόλα:

{1=Πορτοκάλι, 2=Πεπόνι, 3=Αχλάδι, 4=Μήλο, 5=Μούρα, 6=Μάνγκο, 7=Δαμάσκηνο}

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

Ανάκτηση όλων των δεδομένων μεμονωμένα

Εάν θέλετε να ανακτήσετε όλα τα δεδομένα μεμονωμένα, τότε μπορείτε να χρησιμοποιήσετε το Για μέθοδο που σας επιτρέπει να διασχίσετε το HashMap και να εκτυπώσετε κάθε τιμή και το αντίστοιχο κλειδί της. Αυτή η μέθοδος χρησιμοποιεί τη διεπαφή χάρτη που υλοποιεί η κλάση HashMap.

//προβολή όλων των στοιχείων με επαναλήπτη 
για (HashMap. Είσοδος<Ακέραιος, συμβολοσειρά> φρούτα: fruitsMap.entrySet())
{
System.out.println("Κλειδί: " + fruit.getKey() + " Αξία: " + fruit.getValue());
}

Η προσθήκη της παραπάνω μεθόδου στον κώδικά σας θα εκτυπώσει την ακόλουθη έξοδο στην κονσόλα σας:

Κλειδί: 1 Τιμή: Πορτοκαλί
Κλειδί: 2 Τιμή: Πεπόνι
Κλειδί: 3 Τιμή: Αχλάδι
Κλειδί: 4 Τιμή: Apple
Κλειδί: 5 Τιμή: Μούρα
Κλειδί: 6 Τιμή: Μάνγκο
Κλειδί: 7 Τιμή: Δαμάσκηνο

Ανακτήστε μια συγκεκριμένη τιμή

Η κλάση HashMap έχει ένα παίρνω() μέθοδο που παίρνει ένα κλειδί και επιστρέφει την τιμή που αντιστοιχίζεται σε αυτό το κλειδί.

//ανάκτηση ενός μεμονωμένου στοιχείου
Σύστημα.έξω.println(φρούταΧάρτης.παίρνω(4));

Η παραπάνω γραμμή κώδικα εκτυπώνει την ακόλουθη έξοδο στην κονσόλα:

μήλο

Ενημέρωση δεδομένων σε HashMap

Αφού δημιουργήσετε και συμπληρώσετε ένα αντικείμενο HashMap, μπορείτε να χρησιμοποιήσετε το αντικαθιστώ() μέθοδο ενημέρωσης οποιουδήποτε στοιχείου στον χάρτη. Η μέθοδος replace() παίρνει δύο ή τρία ορίσματα. Η μέθοδος first replace() παίρνει το κλειδί που σχετίζεται με ένα υπάρχον στοιχείο, μαζί με τη νέα τιμή που θέλετε να αντιστοιχίσετε σε αυτό.

// αντικαταστήστε ένα μεμονωμένο στοιχείο
fruitsMap.replace (4, "σταφύλια");
Σύστημα.έξω.Τυπώνω(φρούταΧάρτης);

Η εκτέλεση του παραπάνω κώδικα εκτυπώνει το ακόλουθο αντικείμενο στην κονσόλα:

{1=Πορτοκάλι, 2=Πεπόνι, 3=Αχλάδι, 4=Σταφύλι, 5=Μούρα, 6=Μάνγκο, 7=Δαμάσκηνο}

Όπως μπορείτε να δείτε από το παραπάνω αντικείμενο, το "Grapes" αντιστοιχεί στο 4, το οποίο προηγουμένως είχε αντιστοιχιστεί στο "Apple".

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

// αντικαταστήστε ένα μεμονωμένο στοιχείο
fruitsMap.replace (4, "μήλο", "σταφύλια");
Σύστημα.έξω.Τυπώνω(φρούταΧάρτης);

Ο παραπάνω κώδικας εκτυπώνει το ακόλουθο αντικείμενο στην κονσόλα:

{1=Πορτοκάλι, 2=Πεπόνι, 3=Αχλάδι, 4=Σταφύλι, 5=Μούρα, 6=Μάνγκο, 7=Δαμάσκηνο}

Διαγραφή δεδομένων από HashMap

Μπορείτε είτε να διαγράψετε ένα συγκεκριμένο στοιχείο από το HashMap σας χρησιμοποιώντας το αφαιρώ() μέθοδο ή διαγράψτε όλα τα δεδομένα χρησιμοποιώντας το Σαφή() μέθοδος. Η μέθοδος remove() παίρνει είτε ένα είτε δύο ορίσματα. Η πρώτη μέθοδος αφαίρεσης παίρνει το κλειδί που σχετίζεται με την τιμή που θέλετε να καταργήσετε:

//διαγραφή ενός μόνο στοιχείου
φρούταΧάρτης.αφαιρώ(5);
Σύστημα.έξω.println(φρούταΧάρτης);

Ο παραπάνω κώδικας εκτυπώνει το ακόλουθο αντικείμενο στην κονσόλα:

{1=Πορτοκάλι, 2=Πεπόνι, 3=Αχλάδι, 4=Μήλο, 6=Μάγκο, 7=Δαμάσκηνο}

Το ενημερωμένο αντικείμενο δείχνει ότι το στοιχείο με το ζεύγος κλειδιού-τιμής 5 και "Μούρα" δεν είναι πλέον μέρος του fruitsMap. Η δεύτερη μέθοδος remove() παίρνει ένα κλειδί και την τιμή στην οποία αντιστοιχίζεται.

//διαγραφή ενός μόνο στοιχείου
fruitsMap.remove (5, "Μούρα");
Σύστημα.έξω.println(φρούταΧάρτης);

Ο παραπάνω κώδικας εκτυπώνει επίσης το ακόλουθο αντικείμενο στην κονσόλα:

{1=Πορτοκάλι, 2=Πεπόνι, 3=Αχλάδι, 4=Μήλο, 6=Μάγκο, 7=Δαμάσκηνο}

Η μέθοδος clear() δεν δέχεται ορίσματα και επιστρέφει void.

φρούταΧάρτης.Σαφή();
Σύστημα.έξω.println(φρούταΧάρτης);

Η εκτέλεση του παραπάνω κώδικα εκτυπώνει το ακόλουθο κενό αντικείμενο στην κονσόλα:

{}

Τώρα μπορείτε να εκτελέσετε λειτουργίες CRUD σε ένα Java HashMap

Οι HashMaps είναι μία από τις πολλές δημοφιλείς δομές δεδομένων που πρέπει να γνωρίζετε. Αυτό το άρθρο σάς διδάσκει πώς να εκτελείτε λειτουργίες CRUD σε Java HashMaps. Το HashMap είναι μια πολύ χρήσιμη δομή δεδομένων, το κύριο σημείο πώλησης του είναι ότι είναι μια από τις πιο αποτελεσματικές δομές δεδομένων, λόγω της ταχύτητας πρόσβασής του. Ωστόσο, είναι επίσης πολύ βολικό στη χρήση, καθώς επιτρέπει την τυχαία αποθήκευση.