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

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

Βίντεο: Διαφορά μεταξύ Arraylist και Vector

Βίντεο: Διαφορά μεταξύ Arraylist και Vector
Βίντεο: Η ιστορία του Περιοδικού Πίνακα (με τον Mad Scientist) 2024, Νοέμβριος
Anonim

Arraylist vs Vector

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

Τι είναι το Arraylist;

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

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

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

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

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

Συνιστάται: