Διαφορά μεταξύ του HashMap και του LinkedHashMap στην Java

Συγγραφέας: Laura McKinney
Ημερομηνία Δημιουργίας: 2 Απρίλιος 2021
Ημερομηνία Ενημέρωσης: 8 Ενδέχεται 2024
Anonim
Διαφορά μεταξύ του HashMap και του LinkedHashMap στην Java - Τεχνολογία
Διαφορά μεταξύ του HashMap και του LinkedHashMap στην Java - Τεχνολογία

Περιεχόμενο


Το HashMap και το LinkedHashMap είναι οι κλάσεις, αρκετά παρόμοιες μεταξύ τους και χρησιμοποιούνται για τη δημιουργία ενός χάρτη. Η κλάση HashMap επεκτείνει την κλάση AbstractMap για να χρησιμοποιήσει έναν πίνακα κατακερματισμού για να αποθηκεύσει τα στοιχεία στον χάρτη. Η κλάση LinkedHashMap διατηρεί τις καταχωρίσεις στο χάρτη με βάση την εντολή εισαγωγής τους. Το χαρακτηριστικό που διακρίνει το HashMap και το LinkedHashMap από το άλλο είναι αυτό Hashmap δεν διατηρεί τη σειρά των αποθηκευμένων καταχωρήσεων σε ένα χάρτη. Αφ 'ετέρου, LinkedHashMap χρησιμοποιεί μια υβριδική δομή δεδομένων για να διατηρεί τη σειρά των καταχωρίσεων στις οποίες εισήχθησαν. Στο παρακάτω Διάγραμμα σύγκρισης εξέτασα κάποιες άλλες διαφορές μεταξύ του HashMap και του LinkedHashMap, απλά ρίξτε μια ματιά.

  1. Συγκριτικό διάγραμμα
  2. Ορισμός
  3. Βασικές διαφορές
  4. συμπέρασμα

Συγκριτικό διάγραμμα

Βάση σύγκρισηςHashMapLinkedHashMap
ΒασικόςΗ σειρά εισαγωγής στο HashMap δεν διατηρείται.Η σειρά εισαγωγής διατηρείται στο LinkedHashMap.
Δομή δεδομένωνΤο HashMap χρησιμοποιεί το HashTable για την αποθήκευση χαρτών.Το LinkedHashMap χρησιμοποιεί το HashTable μαζί με τη Λίστα Συνδεδεμένων για την αποθήκευση χάρτη.
Επεκτείνει / εφαρμόζειΤο HashMap επεκτείνει το AbstractMap και υλοποιεί τη διεπαφή χάρτη.Το LinkedHashMap επεκτείνει το Hashmap.
ΕκδοχήΤο HashMap εισήχθη στο JDK 2.0.Το LinkedHashMap εισήχθη στο JDK 4.0.
Πάνω από το κεφάλιΣυγκριτικά λιγότερα έξοδα.Συγκριτικά περισσότερη επιβάρυνση, επειδή πρέπει να διατηρήσει τη σειρά των καταχωρήσεων χάρτη.


Ορισμός του HashMap

Το HashMap είναι μια κλάση που χρησιμοποιείται για τη δημιουργία ενός χάρτη. Εφαρμόζει Χάρτης Διεπαφή. Επίσης επεκτείνει το AbstractMap έτσι ώστε να μπορεί να χρησιμοποιήσει έναν πίνακα κατακερματισμού για να αποθηκεύσει τις καταχωρήσεις στον χάρτη. Οι καταχωρήσεις του χάρτη είναι α ζεύγος όπου κάθε πλήκτρο συνδέεται με την τιμή. Το κλειδί στην καταχώριση χρησιμοποιείται για την ανάκτηση της τιμής ως εκ τούτου, το κλειδί πρέπει να είναι μοναδικό. Αυτός είναι ο λόγος για τον οποίο δεν επιτρέπονται διπλά κλειδιά στο HashMap. Αλλά το κλειδί στην κάθε καταχώρηση του χάρτη μπορεί να έχει διαφορετικό τύπο, δηλαδή τα κλειδιά στο χάρτη που δημιουργήθηκε από το HashMap μπορεί να είναι ετερογενή. Η δομή δεδομένων που χρησιμοποιείται από το HashMap για την αποθήκευση ενός χάρτη είναι ένας πίνακας κατακερματισμού.

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


Hashmap hm = νέος χάρτης Hash (); hm.put ("Ajay", 275). hm.put ("Vijay", 250). hm.put ("Jonny", 150). hm.put ("Ιορδανία", 200). System.out.ln (hm); / * εξόδου * / {Vijay = 250, Jonny = 150, Ajay = 275, Ιορδανία = 200}

Όπως και στον παραπάνω κώδικα, μπορείτε να δείτε ότι δημιούργησα ένα αντικείμενο του HashMap και πρόσθεσα τις καταχωρήσεις χρησιμοποιώντας την μέθοδο puts και όταν έκανα το αντικείμενο HashMap, οι καταχωρήσεις δεν εκτυπώθηκαν με τη σειρά που είχαν εισαχθεί. Ως εκ τούτου, δεν μπορείτε να προσποιηθείτε ότι η σειρά των καταχωρήσεων στο HashMap θα επιστρέψει. Το HashMap χρησιμοποιεί όλες τις μεθόδους της διεπαφής χάρτη και της κατηγορίας AbstractMap και δεν εισάγει καμία νέα μέθοδο. έχει τους κατασκευαστές της. Η προεπιλεγμένη χωρητικότητα του χάρτη κατακερματισμού είναι 16 και ο λόγος πληρώσεως προεπιλογής είναι 0.75.

Ορισμός του LinkedHashMap

Το LinkedHashMap είναι επίσης μια κατηγορία για τη δημιουργία ενός χάρτη. Το LinkedHashMap επεκτείνει το HashMap και εισήχθη αργότερα στο HashMap στην έκδοση 4.0 του JDK. Η τάξη παιδιών της κλάσης HashMap LinkedHashMap είναι ακριβώς η ίδια με την τάξη HashMap, συμπεριλαμβανομένων των κατασκευαστών και των μεθόδων. Αλλά, το LinkedHashMap διαφέρει κατά μια έννοια που διατηρεί τη σειρά εισαγωγής των καταχωρήσεων στο χάρτη. Η δομή δεδομένων που χρησιμοποιείται από το LinkedHashMap για την αποθήκευση του χάρτη είναι συνδεδεμένη λίστα και hash table.

Εκτός από τις μεθόδους που κληρονόμησε το HashMap, το LinkedHashMap εισάγει μια νέα μέθοδο που είναι removeEldestEntry (). Αυτή η μέθοδος χρησιμοποιείται για την κατάργηση της παλαιότερης καταχώρησης στον χάρτη. Η προεπιλεγμένη χωρητικότητα του LinkedHashMap είναι 16 και ο προεπιλεγμένος λόγος πλήρωσης είναι 0,75 ο οποίος είναι παρόμοιος με την κλάση HashMap.

  1. Η πιο σημαντική διαφορά είναι ότι η σειρά εισαγωγής του HashMap είναι δεν διατηρούνται ενώ η εντολή εισαγωγής του LinkedHashMap είναι διατηρούνται.
  2. Η δομή δεδομένων που χρησιμοποιείται από το HashMap για την αποθήκευση των στοιχείων του χάρτη είναι Hashtable. Από την άλλη πλευρά, η δομή δεδομένων που χρησιμοποιείται από το LinkedHashMap είναι Συνδεδεμένη λίστα και Hashtable.
  3. Η τάξη HashMap επεκτείνεται AbstractMap class και υλοποιεί το Χάρτης διεπαφή. Ωστόσο, η κλάση LinkedHashMap είναι κλάση παιδιού HashMap class, δηλαδή η κλάση LinkedHashMap επεκτείνει την κλάση HashMap.
  4. Η τάξη HashMap εισήχθη στο JDK 2.0 εκδοχή. Η κλάση LinkedHashMap εισήχθη αργότερα JDK 4.0 εκδοχή.
  5. Συγκριτικά, η κλάση LinkedHashMap έχει περισσότερες δαπάνες από το HashMap καθώς πρέπει να διατηρεί τη σειρά των στοιχείων που έχουν εισαχθεί στο χάρτη.

Συμπέρασμα:

Το LinkedHashMap πρέπει να χρησιμοποιείται μόνο όταν ανησυχούμε για την ακολουθία των στοιχείων που έχουν εισαχθεί στο χάρτη.