Διαφορά μεταξύ ομάδας και λίστας Διαφορά μεταξύ

Anonim

διαφορά μεταξύ της λίστας πινάκων και της συνδεδεμένης λίστας

Πριν βρεθούμε στις πραγματικές διαφορές, ας μάθουμε τι πραγματικά είναι;

Τι είναι ένα Σετ;

Έχουμε συναντήσει την έννοια του Set στα μαθηματικά και το Set εδώ περισσότερο ή λιγότερο σημαίνει το ίδιο. Ναι, είναι μια συλλογή στοιχείων και στις περισσότερες περιπτώσεις μια συλλογή παρόμοιων στοιχείων. Μπορείτε να δοκιμάσετε να προσθέσετε αυτά τα στοιχεία σε ένα σύνολο και να δοκιμάσετε την εκτύπωση για να καταλάβετε πώς αποθηκεύεται.

- <->

Εισαγωγή σε σύνολο: 20, 50, 10, 30.

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

Σε όρους πληροφορικής, το σετ περιλαμβάνει λίγες επιπλέον ιδιότητες όπως οι μέθοδοι και η κληρονομικότητα. Οι μέθοδοι είναι ακριβώς όπως λειτουργίες και κάνουν ορισμένα καθήκοντα, όπως η προσθήκη, η αφαίρεση ή η αναβολή μέσω του συνόλου στοιχείων. Οι περισσότεροι από εμάς είναι γνωστοί του όρου Κληρονομικότητα και αυτό σημαίνει το ίδιο εδώ. Ναι, μπορούμε να κληρονομήσουμε μια μέθοδο από τη Συλλογή της, έτσι ώστε να μπορεί να χρησιμοποιηθεί με το Set Interface. Και πάλι μιλάμε για ένα νέο όρο i. μι. το Set Interface και δεν είναι τίποτα περισσότερο από το σύνολο των στοιχείων, συμπεριλαμβανομένων των μεθόδων.

Πώς να το εφαρμόσετε;

Μόνο για καλύτερη κατανόηση, παρουσιάσαμε ένα σύνολο με τη σύνταξή του. Από την παρακάτω σύνταξη, θα μπορούσατε να προσδιορίσετε τους διάφορους τύπους συνόλων όπως το HashSet και το TreeSet.

εισαγωγή java. χρήσιμο. *;

δημόσια τάξη Setexample {

δημόσιο static void κύρια {String args []) {

int count [] = {34, 22, 10, 60, 30, 22} {25, 17, 76, 12, 88, 57}.

Set set = νέο HashSet ();

δοκιμάστε το {

για το (int i = 0; i <5; i ++) {

σύνολο. προσθήκη (count [i]);

}

Σύστημα. έξω. println (σύνολο);

TreeSet sortedSeteg = νέο TreeSet (σύνολο);

Σύστημα. έξω. println ("Εδώ έχουμε την ταξινομημένη έξοδο:");

Σύστημα. έξω. println (sortedSeteg);

Σύστημα. έξω. println ("Κοίτα το πρώτο στοιχείο:" + (Ακεραιότητα) ταξινομημένο πρώτα.

Σύστημα. έξω. println ("Κοίτα το τελευταίο στοιχείο:" + (Ακέραιος) ταξινομημένο. τελευταία ());

}

catch (Εξαίρεση e) {}

}

}

Η έξοδος του παραπάνω κώδικα έχει ως εξής.

[25, 17, 76, 12, 88]

Εδώ έχουμε την ταξινομημένη έξοδο:

[12, 17, 25, 76, 88]

> Δείτε το τελευταίο στοιχείο: 88

Τι είναι η λίστα;

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

Η είσοδος σε μια λίστα:

John, Nancy, Mary, Alice.

Πώς αποθηκεύεται σε μια λίστα:

John, Nancy, Mary, Alice. Ακριβώς σημειώστε τη σειρά με την οποία έχουν εισαχθεί. Μπορείτε να αναγνωρίσετε ότι το «John» είναι το πρώτο στοιχείο στην είσοδο καθώς και στην έξοδο και ακολουθείται από την ίδια σειρά με την οποία εισάγονται τα ονόματα. Μπορούμε να θεωρήσουμε ακόμη και αυτή μία από τις κύριες ιδιότητες του List.

Πώς να το εφαρμόσετε; Ας δούμε μερικές από τις μεθόδους της λίστας όπως το ArrayList και το LinkedList στην παρακάτω σύνταξη.

εισαγωγή java. χρήσιμο. *;

δημόσια τάξη Collectionssample {

δημόσιο static void main (String [] args) {

Λίστα a1 = νέο ArrayList ();

a1. προσθέστε ("John");

a1. προσθέστε ("Nancy");

a1. προσθέστε ("Μαρία")?

a1. προσθέστε ("Alice")?

Σύστημα. έξω. println ("Στοιχεία ArrayList είναι");

Σύστημα. έξω. εκτύπωση (" t" + α1);

Λίστα l1 = νέο LinkedList ();

l1. προσθέστε ("Silvia");

l1. προσθέστε ("Arjun");

l1. προσθέστε ("Deepika")?

l1. προσθέστε ("Susan");

Σύστημα. έξω. println ();

Σύστημα. έξω. println ("Στοιχεία LinkedList είναι");

Σύστημα. έξω. εκτύπωση (" t" + l1); }}

Η έξοδος της παραπάνω σύνταξης έχει ως εξής.

Στοιχεία ArrayList

[

[

Στοιχεία LinkedList

και το LinkedList διατηρεί την εντολή εισαγωγής.

Πώς διαφέρουν;

Μέθοδοι και περιγραφές:

Το Set και η Λίστα έχουν τις δικές τους μεθόδους και ας δούμε μερικές από αυτές εδώ.

  • S. Όχι

Ορισμός - Μέθοδοι

Λίστα - Μέθοδοι 1. add ()
- Προσθέστε αντικείμενα σε μια συλλογή. προσθέτει το αντικείμενο 'obj' στο καθορισμένο 'ευρετήριο' της λίστας που καλείται και διασφαλίζει ότι δεν αντικαθίσταται κανένα στοιχείο μετατοπίζοντας τα προηγούμενα στοιχεία. void add (int index, Object obj) 2. clear () -
Αφαιρέστε αντικείμενα από μια συλλογή. boolean addAll (int index, Συλλογή c) - Προσθέτει ολόκληρη τη συλλογή «c» στη λίστα αιτήσεων και στο καθορισμένο «ευρετήριο». Εξασφαλίζει επίσης ότι δεν αντικαθίστανται στοιχεία. Μπορούμε επίσης να ελέγξουμε την ορθότητα της λειτουργίας του εξετάζοντας την τιμή επιστροφής. Επιστρέφει 'true' αν η αλλαγή είναι επιτυχής αλλιώς, επιστρέφει μια τιμή 'false'. 3. περιέχει () -
Πρέπει να ελέγξετε αν το Σετ περιέχει ένα συγκεκριμένο αντικείμενο σε αυτό. Επιστρέφει μια τιμή 'true' αν το αντικείμενο υπάρχει στο Set. Αντικείμενο get (int index) - Επιστρέφει το στοιχείο ή αντικείμενο στο καθορισμένο 'ευρετήριο'. 4. isEmpty ()
- Πρέπει να καθορίσετε αν η συλλογή βοηθάει όσο δεν υπάρχουν στοιχεία σε αυτήν. Επιστρέφει μια τιμή 'true' αν δεν υπάρχει στοιχείο. int lastIndexOf (Object obj) - Λειτουργεί παρόμοια με την αντίστροφη μέτρηση indexOf () . Επιστρέφει την τελευταία εμφάνιση του συγκεκριμένου Object 'obj' και επιστρέφει μια τιμή '1' εάν δεν υπάρχει τέτοιο αντικείμενο στη λίστα. Επομένως, μπορεί επίσης να χρησιμοποιηθεί ως περιέχει () Μέθοδος της διεπαφής Set. 6. remove ()
- Αφαιρέστε ένα στοιχείο από μια συλλογή καθορίζοντάς το ως μια παράμετρο της μεθόδου. ListIterator listIterator () - Επιστρέφει έναν iterator στο αρχικό ευρετήριο της λίστας. 7. size ()
- Πρέπει να μετράτε τον αριθμό αντικειμένων ή στοιχείων που έχει μια συλλογή. ListIterator listIterator (ευρετήριο int) - Βοηθά στην επαναφορά από τον κατάλογο κλήσεων ξεκινώντας από τον καθορισμένο «ευρετήριο». 8. -
Αφαίρεση αντικειμένου (int index) - Διαγράφει το αντικείμενο στο καθορισμένο «ευρετήριο» και επιστρέφει το διαγραμμένο στοιχείο ως αποτέλεσμα. Μειώνει επίσης τους προκύπτοντες δείκτες λίστας για να αντικατοπτρίζει τη διαγραφή. 9. -
Σύνολο αντικειμένων (ευρετήριο int, Object obj) - Ορισμός του Object 'obj' στον κατάλογο κλήσεων στο καθορισμένο 'ευρετήριο'. 10. -
Λίστα subList (int start, int end) - Περιλαμβάνει τα αντικείμενα από το αρχικό ευρετήριο στο τέλος του ευρετηρίου της λίστας που έχει επικαλεσθεί τη μέθοδο. Συντήρηση παραγγελίας εισόδου: Το Set δεν διατηρεί τη σειρά των στοιχείων στα οποία έχουν εισαχθεί, ενώ η λίστα τη διατηρεί. Υπάρχει μια εξαίρεση στον κανόνα αυτό για το LinkedHashSet καθώς διατηρεί τη σειρά εισαγωγής, αλλά το άλλο σύνολο, όπως το HashSet και το TreeSet, ταξινομεί τα στοιχεία πριν την αποθηκεύσει. Το ίδιο περιγράφεται με τα παρακάτω παραδείγματα.
  • Ρύθμιση

Εισαγωγή: Γάτα, κούκλα, Apple.

Αποθηκευμένο ως: Apple, Cat, Doll.

Εισαγωγή στη λίστα: Cat, Doll, Apple.

Αποθηκεύονται ως: γάτα, κούκλα, μήλο.

Η παρουσία των διπλότυπων:

Ένα σετ δεν επιτρέπει ποτέ διπλότυπα ενώ μια λίστα το επιτρέπει. Εάν μια διπλή τιμή πρέπει να προστεθεί σε μια λίστα τότε θα αντικατασταθεί. Δείτε τα δείγματα για διπλότυπα Σετ και Λίστα.

  • Αποθηκευμένο ως: 10, 20, 50.

Αποθηκευμένο ως: 10, 20, 50, 20, 50.

Null Values:

Ένα σετ μπορεί να έχει μόνο μία τιμή null ενώ μια Λίστα μπορεί να έχει περισσότερες από μία τιμές null και δεν περιορίζεται σε κανένα αριθμό.

Ρύθμιση εισόδου: μηδέν, μηδέν, άνθρωπος, σκύλος, αεροπλάνο.

Αποθηκευμένο ως: null, Dog, Man, Plane.

  • Εισαγωγή στη λίστα: null, null, Άνδρας, σκύλος, αεροπλάνο.

Αποθηκευμένο ως: null, null, Άνδρας, Σκύλος, Αεροπλάνο.

Χρήση του Iterator & ListIterator:

Η μέθοδος Iterator λειτουργεί καλά και με Set και List, ενώ η μέθοδος ListIterator λειτουργεί μόνο με το List. Το ListIterator μπορεί να χρησιμοποιηθεί για να μετακινηθεί προς τα εμπρός και προς τα πίσω μέσω της λίστας.

Η παρουσία της κλάσης Legacy:

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

  • Εφαρμογές:

Λίγες από τις υλοποιήσεις είναι τα HashSet, LinkedHashSet και TreeSet. Λίγες από τις εφαρμογές του List περιλαμβάνουν το ArrayList και το LinkedList.

  • Πότε πρέπει να χρησιμοποιήσετε το Set & List;

Η χρήση του Set και του List εξαρτάται αποκλειστικά από την απαίτηση διατήρησης της εντολής εισαγωγής.Όπως έχουμε μάθει ότι ένα σετ δεν διατηρεί ποτέ τη σειρά εισαγωγής, μπορεί να χρησιμοποιηθεί όταν η σειρά είναι λιγότερο σημαντική. Με παρόμοιο τρόπο, χρησιμοποιήστε τη λίστα όταν χρειάζεται να διατηρήσετε και την ακολουθία εισαγωγής.

  • Διαφορές σε μορφή πίνακα:

S. Όχι

Διαφορές σε

Ρύθμιση

Λίστα

1. Εντολή εισαγωγής Διατηρεί την εντολή εισαγωγής. Η πρώτη εισαγωγή παραμένει στην πρώτη θέση και ούτω καθεξής, ανεξάρτητα από την αξία της. Ποτέ δεν διατηρεί την εντολή εισαγωγής.
2. Μέθοδοι Χρησιμοποιεί τις μεθόδους όπως add (), clear (), contains (), isEmpty (), remove () και μέγεθος (). Χρησιμοποιεί τις μεθόδους όπως add (), addAll (), get (), lastIndexOf (), ListIterator () με ή χωρίς παράμετρο, remove (), set () και subList ().
3. Διπλότυπα Δεν επιτρέπει ποτέ διπλότυπα και στην περίπτωση τέτοιων εμφανίσεων, η τιμή παίρνει αντικατασταθεί. Επιτρέπει διπλότυπα.
4. Μηδενικές τιμές Μπορεί να έχει μόνο μία μηδενική τιμή στο μέγιστο. Μπορεί να έχει οποιοδήποτε αριθμό μηδενικών τιμών.
5. Χρήση του iterator () & listIterator () Χρησιμοποιεί μόνο τον iterator της μεθόδου (). Χρησιμοποιεί τόσο το iterator () όσο και το listIterator ().
6. Παρουσία Class Legacy Δεν υπάρχει κλάση Legacy. Έχει ως κλάση Legacy που ονομάζεται ως φορέας.
7. Εφαρμογές Λίγες από τις εφαρμογές διεπαφής Set είναι HashSet, LinkedHashSet και Tree Set. Λίγες από τις εφαρμογές διεπαφής λίστας είναι το LinkedList και το ArrayList.
Ελπίζουμε, έχουμε συμπεριλάβει κάθε πιθανή διαφορά μεταξύ του Set και του List. Εάν αισθάνεστε ότι χάσαμε κάτι, παρακαλώ ενημερώστε μας.