Διαφορά μεταξύ Arraylist και Vector

Anonim

Arraylist εναντίον Vector

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

Τι είναι το Arraylist;

Ένας αρραλιστής μπορεί να θεωρηθεί ως ένας δυναμικός πίνακας, ο οποίος μπορεί να μεγαλώσει σε μέγεθος. Επομένως, οι arraylists είναι ιδανικοί για να χρησιμοποιηθούν σε περιπτώσεις όπου δεν γνωρίζετε το μέγεθος των στοιχείων που απαιτούνται κατά τη στιγμή της δήλωσης. Στην Java, οι αρραυλιστές μπορούν να κρατούν μόνο αντικείμενα, δεν μπορούν να κατέχουν πρωτόγονους τύπους άμεσα (μπορείτε να βάλετε τους πρωτόγονους τύπους μέσα σε ένα αντικείμενο ή να χρησιμοποιήσετε τις κατηγορίες περιτυλίξεων των πρωτόγονων τύπων). Γενικά οι αρραλιστές παρέχονται με μεθόδους για την εκτέλεση εισαγωγής, διαγραφής και αναζήτησης. Η πολυπλοκότητα του χρόνου πρόσβασης σε ένα στοιχείο είναι o (1), ενώ η εισαγωγή και διαγραφή έχει μια πολυπλοκότητα χρόνου του o (n). Στην Java, οι arraylists μπορούν να διασχίσουν χρησιμοποιώντας βρόχους foreach, iterators ή απλά χρησιμοποιώντας τους δείκτες. Στην Java, οι arraylists εισήχθησαν από την έκδοση 1. 2 και αποτελούν μέρος του Java Collections Framework.

Τι είναι ένα διάνυσμα;

Το Vector είναι επίσης ένας πίνακας που μπορεί να αναπτυχθεί σε μέγεθος. Οι διανύσματα μπορούν να διανεμηθούν εύκολα και μπορούν να χρησιμοποιηθούν όταν το απαιτούμενο μέγεθος της αποθήκευσης δεν είναι γνωστό μέχρι την εκτέλεση. Οι διανύσματα μπορούν επίσης να κρατούν μόνο αντικείμενα και δεν μπορούν να κατέχουν πρωτόγονους τύπους. Οι διανύσματα συγχρονίζονται, επομένως μπορούν να χρησιμοποιηθούν με ασφάλεια σε πολυνηματικά περιβάλλοντα. Οι διανύσματα παρέχονται με μεθόδους για την προσθήκη αντικειμένων, τη διαγραφή αντικειμένων και αντικειμένων αναζήτησης. Παρόμοια με τον arraylist στη java, οι φορείς μπορούν να διασχίσουν χρησιμοποιώντας βρόχους foreach, iterators ή απλά χρησιμοποιώντας τους δείκτες. Όταν πρόκειται για Java, οι φορείς έχουν συμπεριληφθεί από την πρώτη έκδοση της Java.

Ποια είναι η διαφορά μεταξύ του Arraylist και του Vector;

Παρόλο που τόσο οι αρχαρίστες όσο και οι φορείς είναι πολύ παρόμοια με δυναμικές συστοιχίες που μπορούν να αναπτυχθούν σε μέγεθος, έχουν μερικές σημαντικές διαφορές. Η κύρια διαφορά μεταξύ των αρραλιστών και των φορέων είναι ότι οι φορείς συγχρονίζονται, ενώ οι αρραλιστές είναι ασύγχρονοι. Επομένως, η χρήση αρραλιστών σε πολυνηματικά περιβάλλοντα δεν θα είναι κατάλληλη, ενώ οι φορείς μπορούν να χρησιμοποιηθούν με ασφάλεια σε πολυνηματικά περιβάλλοντα (αφού είναι ασφαλής για τα νήματα). Αλλά ο συγχρονισμός σε διανύσματα θα προκαλούσε μείωση της απόδοσης. Επομένως, δεν θα ήταν καλή ιδέα να χρησιμοποιούμε διανύσματα σε ένα περιβάλλον με σπειρώματα. Εσωτερικά, τόσο οι arraylists όσο και οι διανύσματα χρησιμοποιούν συστοιχίες για τη συγκράτηση αντικειμένων. Όταν ο σημερινός χώρος δεν είναι αρκετός, οι διανύσματα θα διπλασιάσουν το μέγεθος της εσωτερικής του συστοιχίας, ενώ οι arraylists αυξάνουν το μέγεθος της εσωτερικής συστοιχίας κατά 50%.Αλλά όταν χρησιμοποιούμε τόσο τους αρραλιστές όσο και τους φορείς, δίνοντας μια κατάλληλη αρχική χωρητικότητα, μπορεί να αποφευχθεί η περιττή αλλαγή μεγέθους της εσωτερικής συστοιχίας. Σε μια κατάσταση όπου ο ρυθμός αύξησης των δεδομένων είναι γνωστός, η χρήση διανυσμάτων θα ήταν καταλληλότερη δεδομένου ότι θα μπορούσε να οριστεί η επαυξητική τιμή των φορέων.