Ας συζητήσουμε μερικές ακόμη διαφορές μεταξύ του Iterator και του ListIterator με τη βοήθεια του πίνακα σύγκρισης που φαίνεται παρακάτω.
Συγκριτικό διάγραμμα
Βάση σύγκρισης | Iterator | ListIterator |
---|---|---|
Βασικός | Ο Iterator μπορεί να διασχίσει τα στοιχεία μιας συλλογής μόνο προς την κατεύθυνση προς τα εμπρός. | Το ListIterator μπορεί να διασχίσει τα στοιχεία μιας συλλογής προς τα εμπρός καθώς και προς την κατεύθυνση προς τα πίσω. |
Προσθέτω | Ο Iterator δεν είναι σε θέση να προσθέσει στοιχεία σε μια συλλογή. | Το στοιχείο ListIteror μπορεί να προσθέσει στοιχεία σε μια συλλογή. |
Τροποποιώ | Ο Iterator δεν μπορεί να τροποποιήσει τα στοιχεία σε μια συλλογή. | Το ListIterator μπορεί να τροποποιήσει τα στοιχεία μιας συλλογής χρησιμοποιώντας set (). |
Διασχίζω | Ο Iterator μπορεί να διασχίσει τον Χάρτη, τη Λίστα και το Σετ. | Το ListIterator μπορεί να διασχίσει μόνο αντικείμενα λίστας. |
Δείκτης | Ο Iterator δεν έχει καμία μέθοδο για να αποκτήσει ένα δείκτη του στοιχείου σε μια συλλογή. | Χρησιμοποιώντας το ListIterator, μπορείτε να αποκτήσετε ένα ευρετήριο του στοιχείου σε μια συλλογή. |
Ορισμός του Iterator
Το Iterator είναι μια διεπαφή σε ένα πλαίσιο συλλογής . Χρησιμοποιείται για να διασχίσει τα στοιχεία συλλογής. Το Iterator σάς επιτρέπει να επαναλάβετε κάθε στοιχείο στη συλλογή μία προς μία, να αποκτήσετε στοιχεία από τη συλλογή ή να αφαιρέσετε στοιχεία από τη συλλογή. Μπορείτε να παρατηρήσετε ότι δεν μπορείτε να τροποποιήσετε κανένα στοιχείο σε μια συλλογή χρησιμοποιώντας το Iterator.
Το iterator έχει ένα iterator μεθόδου () που επιστρέφει τον iterator στην αρχή της συλλογής. Μόλις πάρετε ένα iterator στην αρχή μιας συλλογής, τότε για να διασχίσετε τα στοιχεία της συλλογής δημιουργηθεί ένας βρόχος που καλεί hasNext () κάθε φορά που επαναλαμβάνεται ο βρόχος. Το hasNext () αν επιστρέφει αληθές σημαίνει ότι το επόμενο στοιχείο υπάρχει στη συλλογή και αν επιστρέψει ψευδές τότε σημαίνει ότι όλα τα στοιχεία διακινούνται. Στη συνέχεια, μέσα στο βρόχο, μπορείτε να αποκτήσετε κάθε στοιχείο σε μια Συλλογή χρησιμοποιώντας το επόμενο () . Η επόμενη () μέθοδος επιστρέφει το επόμενο στοιχείο της συλλογής.
Μειονέκτημα:
Χρησιμοποιώντας το Iterator μπορείτε να διασχίσετε μια συλλογή μόνο προς την κατεύθυνση προς τα εμπρός.
Χρησιμοποιώντας το Iterator, δεν μπορείτε να χειριστείτε ή να τροποποιήσετε τα στοιχεία μιας συλλογής.
Ορισμός τουListIterator
Το ListIterator είναι μια διεπαφή σε ένα πλαίσιο συλλογής και επεκτείνει τη διασύνδεση Iterator . Χρησιμοποιώντας το ListIterator, μπορείτε να διασχίσετε τα στοιχεία της συλλογής τόσο προς τα εμπρός όσο και προς τα πίσω . Μπορείτε επίσης να προσθέσετε, να αφαιρέσετε ή να τροποποιήσετε οποιοδήποτε στοιχείο στη συλλογή. Με λίγα λόγια, μπορούμε να πούμε ότι καταργεί τα μειονεκτήματα του Iterator.
Οι μέθοδοι του ListIterator είναι οι εξής:
hasNext () : Αν η επιστροφή true επιβεβαιώνει ότι υπάρχουν περισσότερα στοιχεία σε μια συλλογή.
next () : Επιστρέφει τα επόμενα στοιχεία της λίστας.
nextIndex () : Επιστρέφει το ευρετήριο των επόμενων στοιχείων στη λίστα.
hasPrevious () : Επιστρέφει true αν υπάρχουν στοιχεία προς την αντίθετη κατεύθυνση σε μια συλλογή.
previous () : Επιστρέφει το προηγούμενο στοιχείο σε μια συλλογή.
previousIndex () : Επιστρέφει δείκτη του προηγούμενου στοιχείου σε μια συλλογή.
remove () : Διαγραφή του στοιχείου από μια συλλογή.
set () : Τροποποιεί το στοιχείο σε μια συλλογή.
add () : Προσθέτει το νέο στοιχείο σε μια συλλογή.
Βασικές διαφορές μεταξύ του Iterator και του ListIterator
- Η βασική διαφορά μεταξύ του Iterator και του ListIterator είναι ότι και ο δρομέας, ο Iterator μπορεί να διασχίσει στοιχεία σε μια συλλογή μόνο προς την κατεύθυνση προς τα εμπρός. Από την άλλη πλευρά, το ListIterator μπορεί να διασχίσει τόσο προς τα εμπρός όσο και προς τα πίσω.
- Με το iterator δεν μπορείτε να προσθέσετε κανένα στοιχείο σε μια συλλογή. Αλλά, χρησιμοποιώντας το ListIterator μπορείτε να προσθέσετε στοιχεία σε μια συλλογή.
- Χρησιμοποιώντας το Iterator, δεν μπορείτε να καταργήσετε ένα στοιχείο σε μια συλλογή όπου, όπως μπορείτε να καταργήσετε ένα στοιχείο από μια συλλογή χρησιμοποιώντας το ListIterator.
- Χρησιμοποιώντας το Iterator μπορείτε να διασχίσετε όλες τις συλλογές όπως Map, List, Set. Αλλά, από το ListIteror μπορείτε να περάσετε μόνο τα αντικείμενα που έχουν εκτελεστεί στο List.
- Μπορείτε να ανακτήσετε ένα ευρετήριο ενός στοιχείου χρησιμοποιώντας το Iterator. Αλλά επειδή η Λίστα είναι διαδοχική και βασίζεται σε ευρετήριο, μπορείτε να ανακτήσετε ένα ευρετήριο ενός στοιχείου χρησιμοποιώντας το ListIterator.
Συμπέρασμα:
Μπορείτε να χρησιμοποιήσετε το ListIterator όταν πρέπει να περάσετε ιδιαίτερα ένα αντικείμενο λίστας τόσο προς τα εμπρός όσο και προς τα πίσω. Αλλιώς μπορείτε να χρησιμοποιήσετε το Iterator καθώς υποστηρίζει όλα τα αντικείμενα συλλογής τύπου.