Omówmy nieco więcej różnic między Iterator i ListIterator za pomocą tabeli porównawczej pokazanej poniżej.
Wykres porównania
Podstawa do porównania | Iterator | ListIterator |
---|---|---|
Podstawowy | Iterator może przemierzać elementy w kolekcji tylko w kierunku do przodu. | ListIterator może przemierzać elementy kolekcji w kierunku do przodu i do tyłu. |
Dodaj | Iterator nie może dodawać elementów do kolekcji. | ListIteror może dodawać elementy do kolekcji. |
Modyfikować | Iterator nie może modyfikować elementów w kolekcji. | ListIterator może modyfikować elementy w kolekcji za pomocą funkcji set (). |
Trawers | Iterator może przemierzać mapę, listę i zestaw. | ListIterator może przechodzić tylko przez obiekty listy. |
Indeks | Iterator nie ma metody uzyskania indeksu elementu w kolekcji. | Za pomocą ListIterator można uzyskać indeks elementu w kolekcji. |
Definicja Iteratora
Iterator to interfejs w strukturze kolekcji . Służy do przechodzenia przez elementy kolekcji. Iterator pozwala na powtarzanie każdego elementu w kolekcji jeden po drugim, pozyskiwanie elementów z kolekcji lub usuwanie elementów z kolekcji. Możesz zauważyć, że nie możesz modyfikować żadnego elementu w kolekcji za pomocą Iteratora.
Iterator ma metodę iterator (), która zwraca iterator na początek kolekcji. Po uzyskaniu iteratora od początku kolekcji, przechodzenie przez elementy w kolekcji ustanawia pętlę wywołującą funkcję hasNext () za każdym razem, gdy pętla przechodzi przez iteracje. Funkcja hasNext (), jeśli zwraca true, oznacza, że następny element znajduje się w kolekcji, a jeśli zwróci wartość false, oznacza to, że wszystkie elementy są wykonywane. Następnie wewnątrz pętli możesz uzyskać każdy element w Kolekcji za pomocą next () . Metoda next () zwraca następny element kolekcji.
Wada:
Używając Iteratora możesz przemierzać kolekcję tylko w kierunku do przodu.
Używając Iteratora, nie można manipulować ani modyfikować elementów w kolekcji.
Definicja ListIterator
ListIterator jest interfejsem w strukturze Collection i rozszerza interfejs Iteratora . Za pomocą ListIterator możesz przemierzać elementy kolekcji zarówno w kierunku do przodu, jak i do tyłu . Możesz także dodawać, usuwać lub modyfikować dowolny element w kolekcji. W skrócie, możemy powiedzieć, że usuwa wady Iteratora.
Metody ListIterator są następujące:
hasNext () : Jeśli return zwraca true, oznacza to, że w kolekcji jest więcej elementów.
next () : Zwraca następne elementy listy.
nextIndex () : Zwraca indeks kolejnych elementów na liście.
hasPrevious () : Zwraca wartość true, jeśli w kolekcji znajdują się elementy w przeciwnym kierunku.
previous () : Zwraca poprzedni element w kolekcji.
previousIndex () : Zwraca indeks poprzedniego elementu w kolekcji.
remove () : Usuń element z kolekcji.
set () : Modyfikuje element w kolekcji.
add () : Dodaje nowy element w kolekcji.
Kluczowe różnice między Iteratorem a ListIteratorem
- Podstawową różnicą między Iterator i ListIterator jest to, że obie są kursorami, Iterator może przemierzać elementy w kolekcji tylko w kierunku do przodu. Z drugiej strony ListIterator może poruszać się zarówno w kierunku do przodu, jak i do tyłu.
- Za pomocą iteratora nie można dodać żadnego elementu do kolekcji. Ale za pomocą ListIterator można dodawać elementy do kolekcji.
- Używając Iteratora, nie można usunąć elementu z kolekcji, w której, jak można usunąć element z kolekcji za pomocą ListIterator.
- Używając Iteratora możesz przemierzać wszystkie kolekcje, takie jak Mapa, Lista, Zestaw. Ale przez ListIteror możesz przemierzać tylko obiekty zaimplementowane w List.
- Możesz pobrać indeks elementu za pomocą Iteratora. Ale ponieważ List jest sekwencyjny i oparty na indeksach, możesz pobrać indeks elementu używając ListIterator.
Wniosek:
Możesz użyć ListIterator, gdy musisz w szczególności przejść przez obiekt List zarówno w kierunku do przodu, jak i do tyłu. Inaczej możesz użyć Iteratora, ponieważ obsługuje on wszystkie obiekty kolekcji typów.