
Συγκριτικό διάγραμμα
Βάση σύγκρισης | Λίστα | ArrayList |
---|---|---|
Βασικός | Η λίστα είναι μια διεπαφή | Το ArrayList είναι μια τυπική κλάση συλλογής. |
Σύνταξη | λίστα διεπαφών | class ArrayList |
Επέκταση / Εφαρμογή | Η διεπαφή καταλόγου επεκτείνει το πλαίσιο συλλογής. | Το ArrayList επεκτείνει το AbstractList και υλοποιεί τη διεπαφή λίστας. |
Ο χώρος ονομάτων | System.Collections.Generic. | System.Collections. |
Εργασία | Χρησιμοποιείται για τη δημιουργία μιας λίστας στοιχείων (αντικειμένων) που σχετίζονται με τους αριθμούς ευρετηρίων τους. | Το ArrayList χρησιμοποιείται για τη δημιουργία ενός δυναμικού πίνακα που περιέχει αντικείμενα. |
Ορισμός της λίστας
Λίστα είναι μια διεπαφή που επεκτείνει το πλαίσιο συλλογής . Η διεπαφή λίστας περιγράφει τη συλλογή στοιχείων που είναι διατεταγμένα διαδοχικά. Η διεπαφή λίστας υλοποιείται από τις ακόλουθες τυπικές κατηγορίες συλλογής όπως ArrayList, LinkedList, CopyOnWriteArrayList, Vector, Stack . Η διεπαφή λίστας περιέχει στοιχεία που σχετίζονται με τους αριθμούς ευρετηρίων τους. Μπορείτε να έχετε πρόσβαση σε ένα στοιχείο στη λίστα με τη θέση του (ευρετήριο) στη λίστα. Μια λίστα που δημιουργείται χρησιμοποιώντας τη διεπαφή λίστας ξεκινά με μηδενικό δείκτη.
Εκτός από τις μεθόδους που κληρονομούνται από το πλαίσιο συλλογής, η διεπαφή κατάλογος ορίζει επίσης κάποια δική της μέθοδο. Οι μέθοδοι που προστέθηκαν από τη διεπαφή λίστας είναι, προσθέστε (int, E) και addAll (int, Collection) . Αυτές οι μέθοδοι προσθέτουν ένα στοιχείο στη λίστα με το δείκτη τους. Οι μέθοδοι μέσα στη λίστα ενδέχεται να κάνουν εξαίρεση, όπως η UnsupportedOperationException, εάν η μέθοδος δεν είναι σε θέση να τροποποιήσει τη λίστα. Όταν ένα αντικείμενο σε μια λίστα δεν είναι συμβατό με ένα άλλο αντικείμενο της λίστας, τότε το ClassCastException είναι ρίχνοντας.Συνολικά στοιχεία δεν επιτρέπονται στη λίστα, αν προσπαθήσετε να εισαγάγετε ένα μηδενικό αντικείμενο στη λίστα, το NullPointerException ρίχνεται.
Μπορείτε να αποκτήσετε ένα στοιχείο από τη λίστα χρησιμοποιώντας τη μέθοδο get () . Μπορείτε να ορίσετε την τιμή ενός στοιχείου στη λίστα χρησιμοποιώντας τη μέθοδο set () . Μπορείτε επίσης να πάρετε την υπο-λίστα από τη λίστα χρησιμοποιώντας μια υπο- λίστα () της μεθόδου. Γίνεται βολικό να λειτουργείτε στην υπο-λίστα αντί για μια λίστα.
Ορισμός του ArrayList
Μία από τις τυπικές κατηγορίες συλλογής είναι το ArrayList το οποίο επεκτείνει την κλάση AbstractList και επίσης υλοποιεί τη διεπαφή λίστας . Η κλάση ArrayList χρησιμοποιείται για τη δημιουργία δυναμικών συστοιχιών που αναπτύσσονται και συρρικνώνονται όποτε απαιτείται. Η λίστα που δημιουργήθηκε χρησιμοποιώντας την κλάση ArrayList δεν είναι παρά η συστοιχία αντικειμένων. Στην Java, ο τυποποιημένος πίνακας έχει το σταθερό μήκος, οπότε πρέπει να γνωρίζετε εκ των προτέρων το μέγεθος του πίνακα. Αλλά, ίσως είναι πιθανόν να μην γνωρίζετε το μήκος του πίνακα που χρειάζεστε μέχρι την ώρα εκτέλεσης. Ως εκ τούτου, το πλαίσιο Collection εισήγαγε την κλάση ArrayList για να ξεπεράσει αυτό το ζήτημα.
Το ArrayList έχει κατασκευαστές που δημιουργούν τον πίνακα με την αρχική του χωρητικότητα. Αν και η χωρητικότητα του αντικειμένου του class ArrayList αυξάνεται αυτόματα όταν προστίθενται στοιχεία στον πίνακα, μπορείτε ακόμα να αυξήσετε χειροκίνητα την χωρητικότητα του αντικειμένου του ArrayList με τη μέθοδο ensureCapacity () . Είναι καλύτερο να αυξήσετε αρχικά την χωρητικότητα της συστοιχίας αντί να ανακατανείμετε αργότερα τη μνήμη. Επειδή η ανακατανομή είναι δαπανηρότερη από την κατανομή της μνήμης ταυτόχρονα.
Βασικές διαφορές μεταξύ της λίστας και του ArrayList
- Μία από τις σημαντικότερες διαφορές μεταξύ του List και του ArrayList είναι ότι η λίστα είναι μια διεπαφή και το ArrayList είναι μια τυπική κλάση Collection.
- Η διεπαφή λίστας επεκτείνει το πλαίσιο συλλογής, ενώ το ArrayList επεκτείνει την κλάση AbstractList και εφαρμόζει τις διεπαφές λίστας .
- Ο χώρος ονομάτων για τη διεπαφή λίστας είναι System.Collection.Generic ενώ ο χώρος ονομάτων για το ArrayList είναι System.Collection .
- Η διεπαφή λίστας δημιουργεί μια συλλογή στοιχείων που αποθηκεύονται σε μια ακολουθία και αναγνωρίζονται ή προσπελάζονται από τον αριθμό του δείκτη τους. Από την άλλη πλευρά, το ArrayList δημιουργεί μια σειρά αντικειμένων όπου ο πίνακας μπορεί να αναπτυχθεί δυναμικά όταν απαιτείται.
Συμπέρασμα:
Το ArrayList ξεπερνά το ζήτημα ενός στατικού πίνακα σε τυπική Java, δηλαδή ο πίνακας δεν μπορεί να αναπτυχθεί σε μέγεθος μόλις δημιουργηθεί. Όταν ένας πίνακας δημιουργείται χρησιμοποιώντας το ArrayList, δημιουργείται ένας δυναμικός πίνακας ο οποίος μπορεί να αναπτυχθεί και να συρρικνωθεί σε μέγεθος όταν χρειάζεται. Η τυπική κλάση συλλογής ArrayList επεκτείνει τη διεπαφή λίστας.