Διαφορά μεταξύ Array και ArrayList Διαφορά μεταξύ

Anonim

Τι είναι το Array και το ArrayList;

Και το Array και το ArrayList είναι δομές δεδομένων βασισμένες σε ευρετήριο που χρησιμοποιούνται συχνά σε προγράμματα Java. Εννοιολογικά, το ArrayList υποστηρίζεται εσωτερικά από συστοιχίες, ωστόσο, η κατανόηση της διαφοράς μεταξύ των δύο είναι το κλειδί για να γίνει ένας σπουδαίος προγραμματιστής Java. Είναι το βασικό βήμα για να ξεκινήσετε, ειδικά για τους αρχάριους που μόλις άρχισαν να κωδικοποιούν. Ενώ και οι δύο χρησιμοποιούνται για την αποθήκευση στοιχείων στη Java, τα οποία μπορεί να είναι είτε πρωτόγονα είτε αντικείμενα, έχουν το δίκαιο μερίδιο των διαφορών όσον αφορά τη λειτουργικότητα και την απόδοση. Η κύρια διαφορά μεταξύ των δύο είναι ότι το Array είναι στατικό ενώ το ArrayList είναι δυναμικό. Αυτό το άρθρο συγκρίνει τα δύο σε διάφορες πτυχές, ώστε να μπορείτε να επιλέξετε το ένα πάνω στο άλλο.

Η διαφορά μεταξύ του Array και του Arraylist

Αντικαθιστώντας

  1. Μια από τις μεγαλύτερες και αισθητές διαφορές μεταξύ των δύο δομών δεδομένων είναι ότι το Array είναι στατικής φύσης που σημαίνει ότι είναι ένας τύπος δεδομένων σταθερού μήκους ενώ Το ArrayList είναι δυναμικής φύσης που σημαίνει ότι είναι μια δομή δεδομένων μεταβλητού μήκους. Από τεχνική άποψη, το μήκος του Array δεν μπορεί να αλλάξει ή να τροποποιηθεί μόλις δημιουργηθεί το αντικείμενο Array. Περιέχει διαδοχική συλλογή στοιχείων του ίδιου τύπου δεδομένων. Οι πίνακες Java λειτουργούν διαφορετικά από ότι λειτουργούν σε C / C ++. Το ArrayList, από την άλλη πλευρά, μπορεί να αλλάξει το μέγεθός του και οι συστοιχίες μπορούν να αναπτυχθούν όσο χρειάζονται. Καθώς πρόκειται για μια δυναμική δομή δεδομένων, τα στοιχεία μπορούν να προστεθούν και να αφαιρεθούν από τη λίστα.

Γενικά

Δεν μπορείτε να δημιουργήσετε συστοιχίες Γενικών κατηγοριών διεπαφών στην Java, έτσι ώστε οι συστοιχίες και τα γενικά δεν πηγαίνουν χέρι-χέρι καθιστώντας αδύνατη τη δημιουργία Generic Array για τον ένα βασικό λόγο ότι οι πίνακες είναι covariant ενώ τα γενικά είναι αμετάβλητα. Ενώ η Array είναι δομή δεδομένων σταθερού μήκους, περιέχει αντικείμενα της ίδιας κλάσης ή πρωτόγονα του συγκεκριμένου τύπου δεδομένων. Επομένως, αν προσπαθήσετε να αποθηκεύσετε διαφορετικό τύπο δεδομένων διαφορετικό από τον καθορισμένο κατά τη δημιουργία του αντικειμένου Array, απλά ρίχνει "ArrayStoreException". Το ArrayList, από την άλλη πλευρά, υποστηρίζει την Generics για να διασφαλίσει την ασφάλεια τύπου.

Primitives

Οι πρωταρχικοί τύποι δεδομένων όπως int, double, long και char δεν επιτρέπονται στο ArrayList. Πιο συγκεκριμένα, τα αντικείμενα και τα πρωτόγονα δεν θεωρούνται αντικείμενα στην Java. Οι πίνακες, από την άλλη πλευρά, μπορούν να κατέχουν πρωτόγονα καθώς και αντικείμενα στην Java επειδή είναι μια από τις πιο αποδοτικές δομές δεδομένων στη Java για την αποθήκευση αντικειμένων. Πρόκειται για έναν συγκεντρωτικό τύπο δεδομένων που έχει σχεδιαστεί για να φιλοξενεί αντικείμενα που μπορούν να είναι είτε του ίδιου είτε διαφορετικού τύπου.
  1. Μήκος

Για να πάρει το μήκος του πίνακα, ο κώδικας πρέπει να έχει πρόσβαση στο χαρακτηριστικό μήκους επειδή πρέπει να γνωρίζουμε το μήκος για να εκτελέσουμε τις λειτουργίες στο Array.Ενώ το ArrayList χρησιμοποιεί τη μέθοδο size () για να καθορίσει το μέγεθος του ArrayList, είναι μάλλον διαφορετικό από τον προσδιορισμό του μήκους του Array. Το χαρακτηριστικό Μέγεθος () προσδιορίζει τον αριθμό των στοιχείων σε ένα ArrayList, το οποίο με τη σειρά του είναι η χωρητικότητα του ArrayList.

  1. Για παράδειγμα

:

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

ArrayList arrList = new ArrayList ();

Σειρά [] στοιχεία = {"Ένα", "Δύο", "Τρία"}}.

για το (String str: items) {

arrList. προσθήκη (str);

}

int μέγεθος = στοιχεία. Μέγεθος();

Σύστημα. έξω. println (μέγεθος);

}

}

Εφαρμογή

Το Array είναι ένα μη αυτόματο προγραμματιστικό στοιχείο στη Java που δημιουργείται δυναμικά και χρησιμοποιεί τον τελεστή αποστολής για να κρατά στοιχεία, ενώ το ArrayList χρησιμοποιεί το χαρακτηριστικό add (). Το ArrayList είναι μια κλάση από το πλαίσιο συλλογής σε Java που χρησιμοποιεί ένα σύνολο συγκεκριμένων μεθόδων για την πρόσβαση και την τροποποίηση των στοιχείων. Το μέγεθος ενός ArrayList μπορεί να αυξηθεί ή να μειωθεί δυναμικά. Τα στοιχεία σε μια συστοιχία αποθηκεύονται σε συνεχή τοποθεσία μνήμης και το μέγεθός της παραμένει στατικό καθ 'όλη.

  1. Απόδοση

Παρόλο που και οι δύο δομές δεδομένων παρέχουν παρόμοια απόδοση με ένα ArrayList υποστηρίζεται από Arrays, το ένα έχει λίγο πλεονέκτημα έναντι άλλου κυρίως ως προς το χρόνο CPU και τη χρήση μνήμης. Ας πούμε, αν γνωρίζετε το μέγεθος του πίνακα, είναι πιθανό να πάτε με το ArrayList. Ωστόσο, η μετακίνηση σε μια Array είναι λίγο πιο γρήγορη από την αλλαγή στο ArrayList. Εάν το πρόγραμμα περιλαμβάνει ένα μεγάλο αριθμό πρωτόγονων, ένας πίνακας θα εκτελέσει σημαντικά καλύτερα από το ArrayList, από άποψη χρόνου και μνήμης. Οι πίνακες είναι μια γλώσσα προγραμματισμού χαμηλού επιπέδου που μπορεί να χρησιμοποιηθεί σε εφαρμογές συλλογής. Ωστόσο, η απόδοση μπορεί να διαφέρει ανάλογα με τη λειτουργία που εκτελείτε.

  1. Array Vs. Arraylist

Array

ArrayList

Array είναι μια δομή δεδομένων σταθερού μήκους του οποίου το μήκος δεν μπορεί να τροποποιηθεί όταν δημιουργηθεί αντικείμενο array. Το ArrayList είναι δυναμικής φύσης που σημαίνει ότι μπορεί να αλλάξει το μέγεθός της για να αναπτυχθεί όταν απαιτείται.
Το μέγεθος ενός πίνακα παραμένει στατικό σε όλο το πρόγραμμα. Το μέγεθος ενός ArrayList μπορεί να αναπτυχθεί δυναμικά ανάλογα με το φορτίο και την χωρητικότητα.
Χρησιμοποιεί τον τελεστή εκχώρησης για την αποθήκευση στοιχείων. Χρησιμοποιεί το χαρακτηριστικό add () για την εισαγωγή στοιχείων.
Μπορεί να περιέχει αρχέτυπα καθώς και αντικείμενα ίδιου ή διαφορετικού τύπου δεδομένων. Τα πρωτότυπα δεν επιτρέπονται στο ArrayList. Μπορεί να περιέχει μόνο τύπους αντικειμένων.
Οι Arrays και Generics δεν συμβαδίζουν. Τα γενικά επιτρέπονται στο ArrayList.
Οι πίνακες μπορούν να είναι πολυδιάστατοι. Το ArrayList είναι μονοδιάστατο.
Είναι ένα μη αυτόματο προγραμματιστικό στοιχείο όπου τα στοιχεία αποθηκεύονται σε συνεχείς θέσεις μνήμης. Είναι μια κλάση από το πλαίσιο συλλογών της Java όπου τα αντικείμενα δεν αποθηκεύονται ποτέ σε παρακείμενες τοποθεσίες.
Η μεταβλητή μήκους χρησιμοποιείται για τον προσδιορισμό του μήκους του πίνακα. Μέθοδος Μέγεθος () χρησιμοποιείται για τον προσδιορισμό του μεγέθους του ArrayList.
Λαμβάνει λιγότερη μνήμη από το ArrayList για την αποθήκευση συγκεκριμένων στοιχείων ή αντικειμένων. Παίρνει περισσότερη μνήμη από το Array για την αποθήκευση αντικειμένων.
Η παρεκτροπή πάνω από μια διάταξη είναι ταχύτερη από την αλλαγή στο ArrayList. Η παρεκτροπή σε ένα ArrayList είναι σημαντικά πιο αργή από την άποψη της απόδοσης.
Περίληψη Αν και κάποιοι μπορεί να πιστεύουν ότι η εφαρμογή πινάκων σε ένα πρόγραμμα μπορεί να έχει αποτελέσματα ταχύτερα από ό, τι να κάνει το ίδιο με το ArrayLists για τον απλό λόγο ότι οι πίνακες είναι δομή δεδομένων χαμηλού επιπέδου, επιδόσεις. Λοιπόν, το μήκος ενός πίνακα είναι σταθερό, ενώ το μέγεθος του ArrayList μπορεί να αυξηθεί ή να μειωθεί δυναμικά, έτσι ArrayList έχει μια μικρή άκρη πάνω από το Array από την άποψη της λειτουργικότητας. Ωστόσο, παρά τις διαφορές, μοιράζονται κάποιες ομοιότητες. Και οι δύο είναι δομές δεδομένων βασισμένες σε ευρετήριο της Java που σας επιτρέπουν να αποθηκεύετε αντικείμενα και και οι δύο επιτρέπουν μηδενικές τιμές καθώς και διπλότυπα. Λοιπόν, εάν γνωρίζετε το μέγεθος των αντικειμένων εκ των προτέρων, θα πρέπει να πάτε με μια σειρά, και αν δεν είστε σίγουροι για το μέγεθος, πηγαίνετε με το ArrayList.