ArrayList και Vector

Ο φορέας υλοποιεί σειρές που μπορούν να αυξηθούν / μειωθούν κατά τη διάρκεια του χρόνου εκτέλεσης όταν προστίθενται ή αφαιρούνται ορισμένα στοιχεία. Τα στοιχεία του μπορούν να προσεγγιστούν χρησιμοποιώντας ένα ολόκληρο ευρετήριο. Δύο περιοχές - αύξηση της παραγωγικής ικανότητας και της παραγωγικής ικανότητας, περιγράφουν τη διαχείριση του φορέα ελέγχου. Έχει τέσσερις διεπαφές: * Λίστα * Τυχαία Πρόσβαση * Κλωνοποίηση * Serializing Διεπαφές

Όπως και οι φορείς, το ArrayList υλοποιεί τέσσερις διεπαφές. Ωστόσο, όπως οι φορείς, το μέγεθός της μπορεί να αλλάξει με την πάροδο του χρόνου. Ονομάζεται επίσης ένα πεδίο του οποίου το μέγεθος είναι ίσο με το ArrayList.

Και οι δύο φορείς και το ArrayList είναι ιδανικό για την αφαίρεση στοιχείων από οποιαδήποτε θέση και την προσθήκη ή την αφαίρεση στοιχείων από το τέλος της κλάσης των κοντέινερ. Όσον αφορά το API, τόσο οι φορείς όσο και το ArrayList είναι πολύ παρόμοιοι. Πού είναι η διαφορά μεταξύ των δύο; Οι ακόλουθες παρατηρήσεις έδωσαν κάποια φως στο θέμα αυτό:

1. Συγχρονισμός: Οι διανύσματα συγχρονίζονται, αλλά το ArrayList δεν είναι. Αν προσθέσετε ή αφαιρέσετε στοιχεία από το ArrayList, ονομάζεται Τροποποίηση περιεχομένου. Εάν πολλαπλά θέματα μπαίνουν στο ArrayList ταυτόχρονα με τον τροποποιητή μπλοκ λίστας, τότε η λίστα πρέπει να συγχρονιστεί από έξω. Εν ολίγοις, το περιεχόμενο του φορέα είναι ασφαλές στο νήμα και το ArrayList δεν είναι. Εάν το αίτημα δεν λέει ασφαλές σπείρωμα, τότε θα πρέπει να επιλέξετε το ArrayList επειδή ο συγχρονισμός επηρεάζει την απόδοση. Οι συγχρονισμένες ArrayLists είναι γρήγορες.

2. Ανάπτυξη δεδομένων: Τα ArrayList και τα στοιχεία διανύσματος αποθηκεύονται επίσης ως πίνακες, αλλά το προεπιλεγμένο μέγεθος των διανυσμάτων είναι 10 και το ArrayList δεν έχει προεπιλεγμένο μέγεθος. Όταν προσθέτετε ένα στοιχείο σε ένα ArrayList ή ένα διάνυσμα, και οι δύο κλάσεις μπορούν να εγκαταλείψουν το δωμάτιο. Σε αυτήν την περίπτωση, από προεπιλογή, το Vector διπλασιάζει το μέγεθος και το μέγεθος του ArrayList αυξάνεται κατά 50%. Μπορείτε να καθορίσετε μια τιμή αύξησης στην περίπτωση των διανυσμάτων που δεν είναι δυνατά για το ArrayList.

3. Στοιχεία δρομολόγησης: Το ArrayList έχει ένα πλεονέκτημα εδώ, καθώς μπορείτε απλά να έχετε πρόσβαση σε ένα στοιχείο χρησιμοποιώντας ένα ευρετήριο. Στην περίπτωση των διανυσμάτων πρέπει να δημιουργηθεί iterator για να διασχίσει τα στοιχεία του.

Περίληψη:

Αν πρέπει να αλλάξετε την κλάση των δοχείων από ένα μόνο νήμα ή κάποια τοπική μεταβλητή, πρέπει να χρησιμοποιήσετε το ArrayList. 2. Χρησιμοποιήστε ένα διάνυσμα όταν υπάρχουν πολλαπλά κλώσματα στην κλάση κοντέινερ, διαφορετικά θα χρειαστεί να συγχρονίσετε μη αυτόματα. 3. Δεν μπορούμε να κάνουμε ανάπτυξη με φορέα και ArrayList. 4.Ο φορέας θα συγχρονιστεί και δεν θα είναι ArrayList. 5.A μπορεί να διπλασιάσει το μέγεθος του φορέα. Το ArrayList μπορεί να το αυξήσει κατά 50%.

Αναφορές