
Cerchiamo di discutere alcune più differenze tra Iterator e ListIterator con l'aiuto del grafico di confronto mostrato di seguito.
Grafico comparativo
Base per il confronto | Iterator | ListIterator |
---|---|---|
Di base | Iterator può attraversare gli elementi di una collezione solo in avanti. | ListIterator può attraversare gli elementi di una raccolta sia in avanti che indietro. |
Inserisci | Iterator non è in grado di aggiungere elementi a una raccolta. | ListIteror può aggiungere elementi a una raccolta. |
Modificare | Iterator non può modificare gli elementi in una raccolta. | ListIterator può modificare gli elementi di una raccolta usando set (). |
Attraversare | Iterator può attraversare Map, List e Set. | ListIterator può attraversare solo gli oggetti List. |
Indice | Iterator non ha alcun metodo per ottenere un indice dell'elemento in una raccolta. | Utilizzando ListIterator, è possibile ottenere un indice dell'elemento in una raccolta. |
Definizione di Iteratore
Iterator è un'interfaccia in un framework di raccolta . È usato per attraversare gli elementi della collezione. Iterator ti permette di iterare ogni elemento della collezione uno per uno, ottenere elementi dalla collezione o rimuovere elementi dalla collezione. È possibile notare che non è possibile modificare alcun elemento in una raccolta utilizzando Iterator.
Iterator ha un metodo iteratore () che restituisce l'iteratore all'inizio della raccolta. Una volta che si ottiene un iteratore all'inizio di una raccolta, per attraversare gli elementi nella raccolta si stabilisce un ciclo che chiama hasNext () ogni volta che il ciclo itera. HasNext () se restituisce true significa che l'elemento successivo è presente nella raccolta e se restituisce false significa che tutti gli elementi sono attraversati. Quindi all'interno del ciclo, puoi ottenere ogni elemento in una raccolta usando next () . Il metodo next () restituisce l'elemento successivo della raccolta.
Inconveniente:
Usando Iterator puoi attraversare una collezione solo nella direzione in avanti.
Usando Iterator, non puoi manipolare o modificare gli elementi in una raccolta.
Definizione di ListIterator
ListIterator è un'interfaccia in un framework Collection e estende l'interfaccia di Iterator . Utilizzando ListIterator, è possibile attraversare gli elementi della raccolta in entrambe le direzioni in avanti e indietro . È inoltre possibile aggiungere, rimuovere o modificare qualsiasi elemento nella raccolta. In breve, possiamo dire che rimuove gli inconvenienti di Iterator.
I metodi di ListIterator sono i seguenti:
hasNext () : se restituisce true conferma che ci sono più elementi in una raccolta.
next () : restituisce i successivi elementi della lista.
nextIndex () : restituisce l'indice degli elementi successivi nell'elenco.
hasPrevious () : restituisce true se nella raccolta sono presenti elementi nella direzione opposta.
previous () : restituisce l'elemento precedente in una raccolta.
previousIndex () : restituisce l'indice dell'elemento precedente in una raccolta.
remove () : elimina l'elemento da una raccolta.
set () : modifica l'elemento in una raccolta.
add () : aggiunge il nuovo elemento in una raccolta.
Differenze chiave tra Iterator e ListIterator
- La differenza fondamentale tra Iterator e ListIterator è che essendo entrambi i cursori, Iterator può attraversare elementi in una raccolta solo in direzione avanti. D'altra parte, ListIterator può attraversare in entrambe le direzioni avanti e indietro.
- Usando l'iteratore non è possibile aggiungere alcun elemento a una raccolta. Ma usando ListIterator puoi aggiungere elementi a una collezione.
- Utilizzando Iterator, non è possibile rimuovere un elemento in una raccolta in cui, come è possibile rimuovere un elemento da una raccolta utilizzando ListIterator.
- Usando Iterator puoi attraversare tutte le raccolte come Map, List, Set. Ma con ListIteror puoi attraversare solo gli oggetti implementati da List.
- Puoi recuperare un indice di un elemento usando Iterator. Ma poiché List è sequenziale e basato su indici, puoi recuperare un indice di un elemento nell'uso di ListIterator.
Conclusione:
Puoi usare ListIterator quando devi attraversare in modo particolare un oggetto List sia in avanti che in retromarcia. Altrimenti puoi utilizzare Iterator poiché supporta tutti gli oggetti di tipo collection.