Różnica między Iteratorem a Listeratorem?
Iterator ite = Set.iterator();
Iterator ite = List.iterator();
ListIterator listite = List.listIterator();
Możemy użyć Iterator
, aby przemierzyć Set
lub List
lub Map
. Ale ListIterator
może być używany tylko do trawersowania a List
, nie może trawersować a Set
. Dlaczego?
Wiem, że główną różnicą jest to, że z iteratorem możemy podróżować tylko w jednym kierunku, ale z ListIterator
możemy podróżować w obu kierunkach. Czy są jakieś inne różnice? I jakieś zalety ListIterator
nad Iterator
?
5 answers
Różnice są wymienione w Javadoc dla Listerator
You can
- iteruj wstecz
- uzyskaj iterator w dowolnym momencie.
- Dodaj nową wartość w dowolnym momencie.
- ustaw nową wartość w tym punkcie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-27 20:14:35
Istnieją dwie różnice:
-
Możemy użyć iteratora do przemierzania zestawów i List, a także mapowania typów obiektów. Podczas gdy Listyterator może być używany do poruszania się po obiektach typu List, ale nie do obiektów typu Set.
Oznacza to, że możemy uzyskać obiekt iteratora za pomocą Set I List, patrz tutaj:
Używając iteratora możemy pobierać elementy z obiektu Collection tylko w kierunku do przodu.
Metody w Iterator:
hasNext()
next()
remove()
Iterator iterator = Set.iterator(); Iterator iterator = List.iterator();
-
Ale otrzymujemy obiekt ListIterator tylko z interfejsu listy, patrz tutaj:
Gdzie jako Listerator pozwala na poruszanie się w obu kierunkach (zarówno do przodu, jak i do tyłu). Ma więc jeszcze dwie metody, takie jak
hasPrevious()
iprevious()
, INNE niż te z iteratora. Ponadto, możemy uzyskać indeksy następnego lub poprzedniego elementu (używając odpowiednionextIndex()
ipreviousIndex()
)Metody w "Listerator": {]}
- hasNext ()
- next ()
- poprzednie ()
- hasPrevious ()
- remove ()
- nextIndex ()
- previousIndex ()
ListIterator listiterator = List.listIterator();
Tzn. nie możemy pobrać obiektu ListIterator z interfejsu Set.
Reference: - Jaka jest różnica między Iteratorem a Listeratorem ?
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-01 04:51:39
Iterator jest super klasą Listeratora.
Oto różnice między nimi:
- Z
iterator
możesz poruszać się tylko do przodu, ale zListIterator
możesz poruszać się do tyłu również podczas czytania elementów. - Z
ListIterator
możesz uzyskać indeks w dowolnym momencie podczas przechodzenia, co nie jest możliwe ziterator
s. - Z
iterator
możesz sprawdzić tylko następny element dostępny lub nie, ale wlistiterator
możesz sprawdzić poprzedni i następny żywioły. - za pomocą
listiterator
możesz dodać nowy element w dowolnym momencie, podczas przechodzenia. Nie jest to możliwe ziterator
. - za pomocą
listiterator
można modyfikować element podczas przechodzenia, co nie jest możliwe za pomocąiterator
.
Iterator look and feel:
public interface Iterator<E> {
boolean hasNext();
E next();
void remove(); //optional-->use only once with next(),
dont use it when u use for:each
}
ListIterator look and feel:
public interface ListIterator<E> extends Iterator<E> {
boolean hasNext();
E next();
boolean hasPrevious();
E previous();
int nextIndex();
int previousIndex();
void remove(); //optional
void set(E e); //optional
void add(E e); //optional
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-11 08:17:10
Zaletą ListIterator
nad Iterator
jest to, że możemy dodać element w dowolnym momencie podczas przechodzenia listy za pomocą Listysteratora.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-22 04:47:37
Różnica Iteratora I Listeratora
- możemy użyć iteratora do przemierzania zestawów i List, a także mapowania typów obiektów. Iterator List może być jednak użyty do przejścia dla obiektów typu List, ale nie dla obiektów typu Set.
Oznacza to, że możemy uzyskać obiekt Iterrator używając Set I List, zobacz tutaj:
Iterator ite = Set.iterator();
Iterator ite = List.iterator();
Ale otrzymujemy obiekt List Iterator tylko z interfejsu List, patrz tutaj:
ListIterator listite = List.listIterator();
Tzn. nie możemy pobrać obiektu List Iterator z zestawu interfejs.
-
Używając iteratora możemy pobierać elementy z obiektu Collection tylko w kierunku do przodu.
- gdzie jako Iterator listy, który pozwala na poruszanie się w obu kierunkach. Czyli Iteratory listy przemierzają dwa kierunki. Więc ma inne metody
hasPrevious()
&previous()
inne niż Iterator.
- gdzie jako Iterator listy, który pozwala na poruszanie się w obu kierunkach. Czyli Iteratory listy przemierzają dwa kierunki. Więc ma inne metody
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-30 02:38:09