Să discutăm câteva diferențe între Iterator și ListIterator cu ajutorul diagramei comparației de mai jos.
Diagramă de comparație
Bazele de comparație | iterator | ListIterator |
---|---|---|
De bază | Iteratorul poate traversa elementele într-o colecție numai în direcția înainte. | ListIteratorul poate traversa elementele într-o colecție în direcția înainte și înapoi. |
Adăuga | Iteratorul nu poate adăuga elemente într-o colecție. | ListIteror poate adăuga elemente într-o colecție. |
Modifica | Iteratorul nu poate modifica elementele dintr-o colecție. | ListIterator poate modifica elementele dintr-o colecție utilizând set (). |
Traversa | Iteratorul poate traversa hartă, listă și set. | ListIteratorul poate traversa numai obiectele listate. |
Index | Iteratorul nu are nici o metodă de obținere a unui indice al elementului într-o colecție. | Folosind ListIterator, puteți obține un index al elementului într-o colecție. |
Definiția Iterator
Iteratorul este o interfață într-un cadru de colectare . Este folosit pentru a traversa prin elementele de colectare. Iteratorul vă permite să iterați fiecare element din colecție unul câte unul, să obțineți elemente din colecția sau să eliminați elementele din colecție. Puteți observa că nu puteți modifica niciun element dintr-o colecție utilizând Iterator.
Iteratorul are o metodă iterator () care returnează iteratorul la începutul colecției. Odată ce obțineți un iterator la începutul unei colecții, apoi să traversați elementele din colecție stabiliți o buclă care a apelurilor hasNext () de fiecare dată când se execută iterația . IfNext (), dacă returnează adevărat, înseamnă că următorul element există în colecție, iar dacă se întoarce false, înseamnă că toate elementele sunt traversate. Apoi, în interiorul buclă, puteți obține fiecare element într-o colecție utilizând următorul () . Metoda următoare () returnează următorul element al colecției.
Dezavantaj:
Folosind Iterator puteți traversa o colecție numai în direcția înainte.
Utilizând Iterator, nu puteți manipula sau modifica elementele dintr-o colecție.
Definiția ListIterator
ListIterator este o interfață într-un cadru de colecție și extinde interfața Iterator . Folosind ListIterator, puteți traversa elementele colecției atât în direcția înainte cât și înapoi . De asemenea, puteți adăuga, elimina sau modifica orice element din colecție. Pe scurt, putem spune că elimină dezavantajele lui Iterator.
Metodele de listIterator sunt după cum urmează:
hasNext () : Dacă returns true confirmă că există mai multe elemente într-o colecție.
next () : Returnează elementele următoare ale listei.
nextIndex () : Returnează indexul elementelor următoare din listă.
hasPrevious () : Returnează true dacă există elemente în direcția inversă într-o colecție.
previous () : Returnează elementul anterior într-o colecție.
previousIndex () : Returnează indexul elementului anterior dintr-o colecție.
remove () : Ștergeți elementul dintr-o colecție.
set () : Modifică elementul într-o colecție.
add () : adaugă noul element într-o colecție.
Diferențe cheie între Iterator și ListIterator
- Diferența de bază dintre Iterator și ListIterator este că ambele fiind cursor, Iterator poate traversa elementele dintr-o colecție numai în direcția înainte. Pe de altă parte, ListIterator poate traversa atât în direcția înainte cât și înapoi.
- Utilizând iteratorul, nu puteți adăuga niciun element într-o colecție. Dar, folosind ListIterator, puteți adăuga elemente într-o colecție.
- Folosind Iterator, nu puteți elimina un element dintr-o colecție unde, după cum puteți elimina un element dintr-o colecție utilizând ListIterator.
- Folosind Iterator puteți traversa toate colecțiile precum Map, List, Set. Dar, prin ListIteror, puteți traversa numai obiectele din listă implementate.
- Puteți extrage un index al unui element utilizând Iterator. Dar, pe măsură ce lista este secvențială și bazată pe index, puteți prelua un index al unui element folosind ListIterator.
Concluzie:
Puteți utiliza ListIterator atunci când trebuie să traversați în mod special un obiect List în direcția înainte și înapoi. Altfel puteți utiliza Iterator deoarece acceptă toate obiectele de colectare de tip.