Iterator ite = Set.iterator();
Iterator ite = List.iterator();
ListIterator listite = List.listIterator();
Możemy użyć Iterator
do przejścia a Set
lub a List
lub a Map
. Ale ListIterator
może być używany tylko do przechodzenia przezList
, nie może przechodzić przez Set
. Czemu?
Wiem, że główna różnica polega na tym, że z iteratorem możemy podróżować tylko w jednym kierunku, ale w ListIterator
obu kierunkach. Czy są jakieś inne różnice? Jakie są zalety ListIterator
ponad Iterator
?
Odpowiedzi:
Różnice są wymienione w Javadoc dla ListIterator
Możesz
źródło
Set
jest prosty: nie ma „aktualnego punktu”: elementy nie mają indeksu i nie ma żadnego użytecznego sposobu, aby dodać element „przed” lub „po” innym.Istnieją dwie różnice:
Możemy użyć Iteratora do przechodzenia przez Set and List, a także typ obiektów Map. Podczas gdy ListIterator może być używany do przechodzenia dla obiektów typu List, ale nie dla obiektów typu Set.
Oznacza to, że możemy uzyskać obiekt Iterator za pomocą Set and List, patrz tutaj:
Używając Iteratora, możemy pobrać elementy z obiektu kolekcji tylko w kierunku do przodu.
Metody w Iteratorze:
hasNext()
next()
remove()
Ale otrzymujemy obiekt ListIterator tylko z interfejsu List, patrz tutaj:
gdzie jako ListIterator umożliwia przechodzenie w obu kierunkach (zarówno do przodu, jak i do tyłu). Więc ma dwie więcej metod, takich jak
hasPrevious()
iprevious()
inne niż te z Iteratora. Możemy również uzyskać indeksy kolejnych lub poprzednich elementów (używając odpowiednionextIndex()
ipreviousIndex()
)Metody w ListIterator:
tj. nie możemy pobrać obiektu ListIterator z interfejsu Set.
Odniesienie: - Jaka jest różnica między Iteratorem a ListIteratorem?
źródło
Oto różnice między nimi:
iterator
możesz iść tylko do przodu, ale zListIterator
możesz przesuwać hasło również podczas czytania elementów.ListIterator
możesz uzyskać indeks w dowolnym momencie podczas przemieszczania, co nie jest możliwe w przypadkuiterator
s.iterator
możesz sprawdzić tylko następny dostępny element lub nie, ale wlistiterator
możesz sprawdzić poprzednie i następne elementy.listiterator
możesz w dowolnym momencie dodać nowy element podczas przemierzania. Nie jest to możliwe ziterator
.listiterator
można modyfikować element podczas przechodzenia, co nie jest możliwe w przypadkuiterator
.Wygląd i styl iteratora:
Wygląd i styl ListIterator:
źródło