Διαφορά μεταξύ του ArrayList και του Vector στη Java
Περιεχόμενο
Το ArrayList και το Vector είναι οι κλάσεις που βρίσκονται κάτω από την ιεραρχία πλαισίου συλλογής. ArrayList και Vector, και οι δύο χρησιμοποιούνται για να δημιουργήσουν μια δυναμική σειρά αντικειμένων όπου ο πίνακας μπορεί να αναπτυχθεί σε μέγεθος όπως και όταν απαιτείται. Υπάρχουν δύο βασικές διαφορές που διακρίνουν το ArrayList και το Vector είναι ότι ο Vector ανήκει στις κλάσεις Legacy οι οποίες αργότερα ανασχεδιάστηκαν για να υποστηρίξουν τις κλάσεις συλλογής, ενώ ένα ArrayList είναι μια τυπική κλάση συλλογής. Μια άλλη σημαντική διαφορά είναι ότι το ArrayList δεν συγχρονίζεται από την άλλη πλευρά. Το διάνυσμα συγχρονίζεται.
Ας μελετήσουμε κάποιες άλλες διαφορές με τη βοήθεια του πίνακα σύγκρισης που φαίνεται παρακάτω.
- Συγκριτικό διάγραμμα
- Ορισμός
- Βασικές διαφορές
- Ομοιότητες
- συμπέρασμα
Συγκριτικό διάγραμμα
Βάση σύγκρισης | ArrayList | Διάνυσμα |
---|---|---|
Βασικός | Η κλάση ArrayList δεν είναι συγχρονισμένη. | Η τάξη διανυσμάτων συγχρονίζεται. |
Κληρονομιά τάξη | Το ArrayList είναι μια τυπική κλάση Collection. | Το Vector είναι μια κλάση παλαιού τύπου, ανασχεδιασμένη για να υποστηρίξει την κλάση συλλογής. |
Δήλωση κλάσης | class ArrayList | class Vector |
Ανακατανομή | Όταν δεν έχει οριστεί ένα ArrayList αυξάνεται κατά το ήμισυ του μεγέθους του. | Όταν δεν ορίζεται, ένας διάνυσμα αυξάνεται για να διπλασιάσει το μέγεθος του. |
Εκτέλεση | Δεδομένου ότι το ArrayList δεν είναι συγχρονισμένο, λειτουργεί πιο γρήγορα από το Vector. | Καθώς το Vector συγχρονίζεται, λειτουργεί πιο αργά από το ArrayList. |
Αρίθμηση / Iterator | Το ArrayList χρησιμοποιεί διεπαφή Iterator για να διασχίσει τα αντικείμενα που είναι αποθηκευμένα στο ArrayList. | Το διανυσματικό χρησιμοποιεί την απαρίθμηση καθώς και τη διασύνδεση Iterator για να διασχίσει τα αντικείμενα που είναι αποθηκευμένα σε Vectors. |
Ορισμός του ArrayList
Το ArrayList ανήκει στον κατάλογο των τυποποιημένων κατηγοριών συλλογής. Το class ArrayList ορίζεται μέσα στο java.util πακέτο, επεκτείνει το AbstractList η οποία είναι επίσης μια τυποποιημένη κατηγορία συλλογής, και υλοποιεί επίσης Λίστα, μια διεπαφή που ορίζεται στις διεπαφές συλλογής. Στην Java, μια τυποποιημένη διάταξη είναι πάντα σταθερού μήκους. Αυτό σημαίνει κάποτε δημιουργημένο. δεν αυξάνεται δυναμικά ή συρρικνώνεται σε μέγεθος. Έτσι, θα πρέπει να έχετε την προηγούμενη γνώση του μήκους του πίνακα που χρησιμοποιείτε. Αλλά, μερικές φορές μπορεί να συμβεί ότι το απαιτούμενο μήκος αποκαλύπτεται κατά το χρόνο εκτέλεσης έτσι, για να χειριστεί αυτό το είδος της κατάστασης java εισήγαγε το ArrayList.
Το ArrayList είναι κλάση που χρησιμοποιείται για τη δυναμική δημιουργία ενός πίνακα που περιέχει τις αναφορές στα αντικείμενα. Αυτός ο πίνακας θα μπορούσε να αυξηθεί σε μέγεθος όπως και όταν απαιτείται. Η δήλωση κλάσης έχει ως εξής:
class ArrayList Εδώ, το Ε καθορίζει τον τύπο των αντικειμένων που θα διατηρεί ένας πίνακας. Ο πίνακας που δημιουργείται έχει μεταβλητό μήκος και αυξάνει και μειώνεται το μέγεθος όταν προστίθενται ή αφαιρούνται αντικείμενα από τη λίστα. Το ArrayList δεν είναι συγχρονισμένο, αυτό σημαίνει ότι περισσότερα από ένα νήμα μπορούν να λειτουργήσουν ταυτόχρονα στον πίνακα. Για παράδειγμα, αν ένα νήμα προσθέτει μια αναφορά αντικειμένου στον πίνακα και ένα άλλο νήμα καταργεί ταυτόχρονα μια αναφορά αντικειμένου από τον ίδιο πίνακα. Η δημιουργία ενός δυναμικού πίνακα χρησιμοποιώντας την τάξη ArrayList: ArrayList Στον παραπάνω κώδικα, μπορείτε να το δείτε. Δημιούργησα μια σειρά από αντικείμενα τύπου συμβολοσειράς. Πρόσθεσα κάποια αντικείμενα στον πίνακα S1 χρησιμοποιώντας τη μέθοδο add () και αργότερα διαγράψαμε μερικά αντικείμενα χρησιμοποιώντας τη μέθοδο remove (). Μπορείτε να παρατηρήσετε ότι αν δεν καθορίσετε το αρχικό μέγεθος του πίνακα θα είναι μήκους '0'. Όπως μπορείτε να δείτε ο πίνακας μεγαλώνει και συρρικνώνεται σε μέγεθος καθώς προσθέτετε και διαγράφετε τα στοιχεία. Το Vector είναι μια κλάση Legacy που επανασχεδιάζεται για να υποστηρίξει την κλάση συλλογής στην ιεραρχία συλλογικού πλαισίου. Η τάξη φορέα ορίζεται επίσης στο java.util πακέτο, επεκτάθηκε από AbstractList κατηγορίας και εφαρμόζονται από την Λίστα διεπαφή. Η κλάση Vector δηλώνεται ως εξής: class Vector Εδώ, το E ορίζει τον τύπο του αντικειμένου που θα αποθηκευτεί σε έναν πίνακα. Ένας πίνακας που δημιουργήθηκε χρησιμοποιώντας την κλάση Vector είναι μεταβλητού μήκους. Αυξάνει το διπλάσιο του μεγέθους εάν δεν έχει καθοριστεί η αύξηση. Ας καταλάβουμε τη δημιουργία πίνακα χρησιμοποιώντας το Vector. Διάνυσμα Στον παραπάνω κώδικα μπορείτε να δείτε ότι, αναφέρω ιδιαίτερα το μέγεθος και την τιμή αύξησης στον κατασκευαστή του Vector αντίστοιχα, ενώ δηλώνω τη συστοιχία αντικειμένων string. Ως εκ τούτου, μπορείτε να παρατηρήσετε ότι ως το όριο του πίνακα τελειώνει, αυξάνεται κατά την τιμή που παρέχεται στον κατασκευαστή κατά τη δήλωση. Τελειώνω λέγοντας ότι η χρήση του ArrayList είναι καλύτερη από τη χρήση του Vector καθώς εκτελείται γρηγορότερα και καλύτερα.Ορισμός του διάνυσμα
Ομοιότητες:
Συμπέρασμα: