Βασική διαφορά – Λίστα έναντι σετ
Οι περισσότερες γλώσσες προγραμματισμού χρησιμοποιούν πίνακες για την αποθήκευση ενός συνόλου δεδομένων του ίδιου τύπου. Ένα σημαντικό μειονέκτημα των πινάκων είναι ότι, μόλις δηλωθεί το μέγεθος του πίνακα, δεν μπορεί να τροποποιηθεί. Εάν ο προγραμματιστής θέλει να αποθηκεύσει τιμές που υπερβαίνουν το μέγεθος του πίνακα, τότε θα πρέπει να δημιουργήσει έναν νέο πίνακα και να αντιγράψει τα υπάρχοντα στοιχεία στον νέο πίνακα. Σε αυτές τις περιπτώσεις, μπορούν να χρησιμοποιηθούν συλλογές. Είναι δυνατή η προσθήκη στοιχείων, η διαγραφή στοιχείων και πολλές άλλες λειτουργίες με την υποστήριξη συλλογών. Υπάρχουν διάφοροι τύποι συλλογών που διατίθενται σε γλώσσες προγραμματισμού όπως η Java. Η λίστα και το σύνολο είναι διεπαφές της ιεραρχίας συλλογών. Η βασική διεπαφή για άλλες διεπαφές είναι η συλλογή. Η βασική διαφορά μεταξύ List και Set είναι ότι το List υποστηρίζει την αποθήκευση του ίδιου στοιχείου πολλές φορές, ενώ το Set δεν υποστηρίζει την αποθήκευση του ίδιου στοιχείου πολλές φορές. Επομένως, ένα σύνολο δεν επιτρέπει την αντιγραφή.
Τι είναι Λίστα;
Η λίστα είναι μια διεπαφή που επεκτείνει τη διεπαφή συλλογής. Υπάρχει ένας αριθμός μεθόδων στη διεπαφή συλλογής. Η μέθοδος προσθήκης βοηθά στην προσθήκη ενός στοιχείου. Η «μέθοδος κατάργησης» είναι η αφαίρεση ενός στοιχείου. Υπάρχει η «μέθοδος addAll» για την προσθήκη πολλών στοιχείων ενώ η «μέθοδος removeAll» για την κατάργηση των στοιχείων από τη συλλογή. Η μέθοδος περιέχει βοηθά να βρείτε εάν ένα συγκεκριμένο αντικείμενο υπάρχει στη Λίστα ή όχι. Το «containsAll» είναι να βρείτε εάν ένα σύνολο αντικειμένων υπάρχει στη συλλογή. Η μέθοδος επαναλήπτης χρησιμοποιείται για να κάνει βρόχο στα στοιχεία της λίστας. Καθώς η λίστα επεκτείνει τη συλλογή, όλες οι μέθοδοι συλλογής ανήκουν στη λίστα. Εκτός από αυτές τις μεθόδους, η Λίστα έχει μεθόδους όπως λήψη και ρύθμιση. Ο προγραμματιστής μπορεί να πάρει μια τιμή σε ένα συγκεκριμένο ευρετήριο χρησιμοποιώντας τη μέθοδο get. Ο προγραμματιστής μπορεί να ορίσει μια τιμή σε ένα συγκεκριμένο ευρετήριο χρησιμοποιώντας τη μέθοδο set. Το "indexOf" χρησιμοποιείται για την εύρεση του ευρετηρίου ενός στοιχείου.
Σε μια λίστα, οι λειτουργίες μπορούν να εκτελεστούν ανάλογα με τη θέση. Ο προγραμματιστής μπορεί να παρέχει το στοιχείο δεδομένων που πρόκειται να προστεθεί στο ευρετήριο. Άρα θα προστεθεί στο συγκεκριμένο ευρετήριο. Εάν ο προγραμματιστής δεν δώσει ευρετήριο, το στοιχείο θα προστεθεί στο τέλος της λίστας. Διατηρεί επίσης τη σειρά που έχει εισαχθεί. Εάν προστεθεί το στοιχείο 1 και μετά προστεθεί το στοιχείο 2, τότε το στοιχείο 1 θα είναι πριν από το στοιχείο 2.
Εικόνα 01: Λίστα και σύνολο
ArrayList, LinkedList, Vector είναι μερικές κλάσεις που υλοποιούν τη λίστα. Σε μια ArrayList, η πρόσβαση σε ένα στοιχείο είναι γρήγορη, αλλά η εισαγωγή και η διαγραφή είναι μικρότερη. Το ArrayList δεν είναι ασφαλές για νήματα. Η πρόσβαση στον ίδιο ArrayList από πολλά νήματα ενδέχεται να μην δώσει το ίδιο αποτέλεσμα. Σε μια LinkedList, τα στοιχεία συνδέονται τόσο προς τα πίσω όσο και προς τα εμπρός. Η εισαγωγή και η διαγραφή στοιχείων χρησιμοποιώντας μια LinkedList είναι ταχύτερη από την ArrayList. Η LinkedList υλοποιεί τη λίστα και την ουρά και τα δύο. Το Vector είναι παρόμοιο με το ArrayList, αλλά είναι ασφαλές στο πέλμα επειδή όλες οι μέθοδοι είναι συγχρονισμένες.
Τι είναι το Σετ;
Το Set είναι μια διεπαφή που επεκτείνει τη διεπαφή συλλογής. Καθώς η διεπαφή Set επεκτείνει τη Συλλογή, όλες οι μέθοδοι συλλογής ανήκουν επίσης στο Set. Ένα σύνολο δεν υποστηρίζει διπλές τιμές. Επομένως, ο προγραμματιστής δεν μπορεί να αποθηκεύσει το ίδιο στοιχείο δύο φορές. Διατηρεί ένα μοναδικό σύνολο στοιχείων. Η διεπαφή SortedSet επεκτείνει τη διεπαφή Set. Το SortedSet διατηρεί τα στοιχεία σε ταξινομημένη σειρά. Η διεπαφή NavigableSet επεκτείνει το SortedSet. Το NavigableSet παρέχει μεθόδους πλοήγησης όπως κάτω, δάπεδο, οροφή κ.λπ.
HashSet, LinkedHashSet και TreeSet είναι μερικές κλάσεις που υλοποιούν τη διεπαφή Set. Το HashSet υλοποιεί τη διεπαφή Set. Δεν διατηρεί τη σειρά που έχει εισαχθεί. Εάν οι τιμές εισαχθούν ως a, x, b μπορεί να αποθηκευτεί ως, x, a, b. Το LinkedSet διατηρεί τη σειρά που έχει εισαχθεί. Εάν τα στοιχεία εισαχθούν με σειρά a, x, b, η σειρά αποθήκευσης θα είναι a, x, b. Το TreeSet υλοποιεί το Set και το NavigableSet. Δεν διατηρεί τη σειρά εισαγωγής, αλλά αποθηκεύει τα στοιχεία με τη σειρά ταξινόμησης. Εάν η σειρά που έχει εισαχθεί είναι a, c, b, τότε τα στοιχεία θα αποθηκευτούν ως a, b, c. Όλα τα HashSet, LinkedHashSet και TreeSet δεν θα έχουν διπλότυπα στοιχεία.
Ποιες είναι οι ομοιότητες μεταξύ λίστας και συνόλου;
- Και οι δύο διεπαφές λίστας και συνόλου επεκτείνουν τη διεπαφή συλλογής.
- Λειτουργίες υποστήριξης και λίστας και ορισμού, όπως προσθήκη, αφαίρεση στοιχείων.
Ποια είναι η διαφορά μεταξύ λίστας και συνόλου;
Λίστα εναντίον σετ |
|
Η διεπαφή λίστας είναι η δευτερεύουσα διεπαφή της συλλογής που περιέχει μεθόδους για την εκτέλεση λειτουργιών όπως εισαγωγή, διαγραφή βάσει του ευρετηρίου. | Το Set Interface είναι μια δευτερεύουσα διεπαφή της συλλογής που περιέχει μεθόδους για την εκτέλεση λειτουργιών όπως εισαγωγή, διαγραφή στοιχείων διατηρώντας τα μοναδικά στοιχεία. |
Μαθήματα | |
ArrayList, Vector και LinkedList είναι κλάσεις που υλοποιούν τη διεπαφή λίστας. | HashSet, LinkedHashSet και TreeSet είναι κλάσεις που υλοποιούν τη διεπαφή Set. |
Αντιγραφή στοιχείων | |
Η λίστα υποστηρίζει αντιγραφή στοιχείων. | Το Σετ δεν υποστηρίζει διπλασιασμό στοιχείων. Τα στοιχεία είναι μοναδικά. |
Σύνοψη – Λίστα έναντι σετ
Οι Συλλογές χρησιμοποιούνται για δυναμική αποθήκευση στοιχείων. Γλώσσες προγραμματισμού όπως η Java παρέχει διεπαφή συλλογής. Το List και το Set είναι δύο διεπαφές που ανήκουν στη διεπαφή συλλογής. Και οι δύο διεπαφές επεκτείνουν τη συλλογή. Αυτό το άρθρο εξέτασε τη διαφορά μεταξύ λίστας και συνόλου. Η βασική διαφορά μεταξύ List και Set είναι ότι η List υποστηρίζει την αποθήκευση του ίδιου στοιχείου πολλές φορές, ενώ το Set δεν υποστηρίζει την αποθήκευση του ίδιου στοιχείου πολλές φορές. Το σετ διατηρεί πάντα μοναδικά στοιχεία.