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?

Author: nbro, 2012-06-11

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.
 133
Author: Peter Lawrey,
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:

  1. 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:

    1. hasNext()
    2. next()
    3. remove()
    Iterator iterator = Set.iterator();
    Iterator iterator = List.iterator();
  2. 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() i previous(), INNE niż te z iteratora. Ponadto, możemy uzyskać indeksy następnego lub poprzedniego elementu (używając odpowiednio nextIndex() i previousIndex())

    Metody w "Listerator": {]}

    1. hasNext ()
    2. next ()
    3. poprzednie ()
    4. hasPrevious ()
    5. remove ()
    6. nextIndex ()
    7. 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 ?

 38
Author: jaideep,
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:

  1. Z iterator możesz poruszać się tylko do przodu, ale z ListIterator możesz poruszać się do tyłu również podczas czytania elementów.
  2. Z ListIterator możesz uzyskać indeks w dowolnym momencie podczas przechodzenia, co nie jest możliwe z iterator s.
  3. Z iterator możesz sprawdzić tylko następny element dostępny lub nie, ale w listiterator możesz sprawdzić poprzedni i następny żywioły.
  4. za pomocą listiterator możesz dodać nowy element w dowolnym momencie, podczas przechodzenia. Nie jest to możliwe z iterator.
  5. 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
}
 24
Author: user1923551,
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.

 2
Author: Alice,
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

  1. 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.

  1. 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.
 1
Author: Ramkailash,
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