Βασική διαφορά – TreeSet vs HashSet
Οι περισσότερες γλώσσες προγραμματισμού υποστηρίζουν Arrays. Είναι μια δομή δεδομένων που χρησιμοποιείται για την αποθήκευση πολλαπλών στοιχείων του ίδιου τύπου δεδομένων. Εάν υπάρχει πίνακας δηλωμένος για έξι στοιχεία, τότε δεν μπορεί να χρησιμοποιηθεί για την αποθήκευση δέκα στοιχείων. Επομένως, οι πίνακες δεν είναι δυναμικοί και δεν μπορούν να αλλάξουν το μέγεθος του πίνακα αφού δηλωθεί. Γλώσσες προγραμματισμού όπως η Java υποστηρίζουν Συλλογές που χρησιμοποιούνται για τη δυναμική αποθήκευση δεδομένων. Οι συλλογές υποστηρίζουν λειτουργίες όπως η προσθήκη στοιχείων και η διαγραφή στοιχείων. Υπάρχει ένας αριθμός διεπαφών και κλάσεων στην ιεραρχία συλλογής. Η βασική διεπαφή είναι η διεπαφή συλλογής. Το Set είναι μια διεπαφή που επεκτείνει τη διεπαφή συλλογής. Δεν επιτρέπει την επικάλυψη. Το TreeSet και το HashSet είναι δύο κλάσεις στην ιεραρχία Collection και αμφότερα υλοποιούν τη διεπαφή Set. Το TreeSet είναι μια κλάση που υλοποιεί τη διεπαφή Set και χρησιμοποιείται για την αποθήκευση μοναδικών στοιχείων σε αύξουσα σειρά. Το HashSet είναι μια κλάση που υλοποιεί τη διεπαφή Set και χρησιμοποιείται για την αποθήκευση μοναδικών στοιχείων χρησιμοποιώντας τον μηχανισμό Hashing. Η βασική διαφορά μεταξύ TreeSet και HashSet είναι ότι το TreeSet αποθηκεύει τα στοιχεία σε αύξουσα σειρά, ενώ το HashSet δεν αποθηκεύει τα στοιχεία σε αύξουσα σειρά. Τόσο το TreeSet όσο και το HashSet αποθηκεύουν μόνο μοναδικά στοιχεία.
Τι είναι το TreeSet;
Η κλάση TreeSet υλοποιεί τη διεπαφή NavigableSet. Η διεπαφή NavigableSet επεκτείνει τις διεπαφές SortedSet, Set, Collection και Iterable με ιεραρχική σειρά. Το TreeSet διατηρεί πάντα την αύξουσα σειρά. Εάν τα στοιχεία εισήχθησαν με σειρά B, A, C, θα αποθηκευτούν ως A, B, C. Οι μέθοδοι όπως add (), remove () μπορούν να χρησιμοποιηθούν με αντικείμενο TreeSet. Η μέθοδος προσθήκης μπορεί να χρησιμοποιηθεί για την προσθήκη ενός στοιχείου. Η μέθοδος αφαίρεσης χρησιμοποιείται για την αφαίρεση ενός στοιχείου από τη συλλογή. Αυτές είναι μερικές μέθοδοι που μπορούν να χρησιμοποιηθούν με το TreeSet.
Εικόνα 01: Πρόγραμμα με TreeSet
Σύμφωνα με το παραπάνω πρόγραμμα δημιουργείται ένα αντικείμενο τύπου TreeSet. Τα στοιχεία δεδομένων συμβολοσειράς προστίθενται σε αυτό το αντικείμενο χρησιμοποιώντας τη μέθοδο προσθήκης. Η σειρά εισαγωγής δεδομένων είναι A, D, A, B, C, D. Χρησιμοποιώντας τον επαναλήπτη, οι αποθηκευμένες τιμές εκτυπώνονται στην οθόνη. Η έξοδος είναι A, B, C, D. Παρόλο που υπάρχουν δύο γράμματα A και δύο D, η έξοδος εμφανίζει το ένα A και ένα D το καθένα. Επομένως, το TreeSet αποθηκεύει μοναδικά στοιχεία. Δεν υπάρχει συγκεκριμένη σειρά εισαγωγής, αλλά κατά την παρατήρηση της εξόδου, μπορεί να φανεί ότι το Δενδροσύνολο διατηρεί την αύξουσα σειρά των στοιχείων.
Τι είναι ένα HashSet;
Η κλάση HashSet επεκτείνει την κλάση AbstractSet που υλοποιεί το Set Interface. Η διεπαφή Set κληρονομεί τις διεπαφές Collection και Iterable με ιεραρχική σειρά. Στο HashSet, δεν υπάρχει καμία εγγύηση ότι τα στοιχεία θα διατηρήσουν την αύξουσα σειρά και την εισαγόμενη σειρά. Εάν η σειρά που εισήχθη ήταν A, B, C, τότε οι τιμές μπορεί να αποθηκευτούν ως C, A, B. Η σειρά αποθήκευσης μπορεί επίσης να είναι A, B, C, αλλά δεν υπάρχει καμία εγγύηση ότι διατηρείται η σειρά που εισήχθη ή η αύξουσα σειρά.
Εικόνα 02: Πρόγραμμα με HashSet
Σύμφωνα με το παραπάνω πρόγραμμα δημιουργείται ένα αντικείμενο τύπου HashSet. Τα στοιχεία δεδομένων συμβολοσειράς προστίθενται σε αυτό το αντικείμενο χρησιμοποιώντας τη μέθοδο προσθήκης. Η σειρά εισαγωγής δεδομένων είναι L, R, M, M, R, L. Χρησιμοποιώντας τον επαναλήπτη, οι αποθηκευμένες τιμές εκτυπώνονται στην οθόνη. Η έξοδος είναι R L M. Παρόλο που υπάρχουν δύο γράμματα L, R και M από το καθένα, εμφανίζεται μόνο ένα γράμμα από το καθένα. Επομένως, το HashSet αποθηκεύει μοναδικά στοιχεία. Κατά την παρατήρηση της εξόδου, μπορεί να φανεί ότι δεν υπάρχει αύξουσα σειρά ή ότι η σειρά που έχει εισαχθεί διατηρείται.
Ποιες είναι οι ομοιότητες μεταξύ TreeSet και HashSet;
- Τόσο το TreeSet όσο και το HashSet είναι κλάσεις που ανήκουν στην ιεραρχία της συλλογής.
- Τόσο το TreeSet όσο και το HashSet αποθηκεύουν μόνο μοναδικά στοιχεία.
- Τόσο το TreeSet όσο και το HashSet μπορούν να χρησιμοποιηθούν για την αποθήκευση και το χειρισμό πολλών στοιχείων.
- Τόσο το TreeSet όσο και το HashSet δεν διατηρούν την εισαγόμενη σειρά.
Ποια είναι η διαφορά μεταξύ TreeSet και HashSet;
TreeSet vs HashSet |
|
Το TreeSet είναι μια κλάση στην ιεραρχία συλλογής που χρησιμοποιείται για την αποθήκευση μοναδικών στοιχείων σε αύξουσα σειρά. | Το HashSet είναι μια κλάση στην ιεραρχία συλλογής που χρησιμοποιείται για την αποθήκευση μοναδικών στοιχείων χρησιμοποιώντας τον μηχανισμό Hashing. |
Αποθήκευση στοιχείων | |
Το TreeSet αποθηκεύει τα στοιχεία με αύξουσα σειρά. | Το HashSet δεν αποθηκεύει τα στοιχεία σε αύξουσα σειρά. |
Σύνοψη – TreeSet vs HashSet
Στον προγραμματισμό, απαιτείται η δυναμική αποθήκευση στοιχείων δεδομένων. Γλώσσες προγραμματισμού όπως η Java υποστηρίζουν Συλλογές για την επίτευξη αυτού του στόχου. Υπάρχει ένας αριθμός διεπαφών και κλάσεων στην ιεραρχία συλλογής. Το TreeSet και το HashSet είναι δύο κλάσεις στην ιεραρχία της συλλογής. Και τα δύο υλοποιούν τη διεπαφή Set. Το TreeSet είναι μια κλάση που υλοποιεί τη διεπαφή Set και χρησιμοποιείται για την αποθήκευση μοναδικών στοιχείων σε αύξουσα σειρά. Το HashSet είναι μια κλάση που υλοποιεί τη διεπαφή Set και χρησιμοποιείται για την αποθήκευση μοναδικών στοιχείων χρησιμοποιώντας τον μηχανισμό Hashing. Η διαφορά μεταξύ TreeSet και HashSet είναι ότι το TreeSet αποθηκεύει τα στοιχεία σε αύξουσα σειρά, ενώ το HashSet δεν αποθηκεύει τα στοιχεία σε αύξουσα σειρά. Αυτό το άρθρο εξέτασε τη διαφορά μεταξύ TreeSet και HashSet.