Différence entre Iterator et ListIterator en java
Iterator est utilisé pour parcourir une collection en Java. Vous pouvez utiliser Iterator pour parcourir une List, Set, Map ou n’importe quelle collection, mais vous ne savez peut-être pas qu’il existe un autre moyen pour parcourir une liste en Java? ListIterator. Il existe de nombreuses différences entre Iterator et ListIterator en Java, mais la différence clé entre les deux est la suivante: Iterator ne vous permet de parcourir que dans un sens, avec la méthode next() vous pourrez récupérer l’élément suivant, il n’existe pas la méthode previous() pour obtenir l’élément précédent. Tandis que, ListIterator vous permet de parcourir la liste dans les deux sens, c’est-à-dire en avant et en arrière. Il dispose des méthodes next() et previous() pour accéder aux éléments suivant et précédent de List.
Table de comparaison
Iterator | ListIterator | |
---|---|---|
Opérations | La possibilitéde de supprimer des éléments | La possibilitéde de supprimer, ajouter et remplacer des éléments |
Méthodes | remove() | remove(), add() et set() |
Utilisation | La méthode iterator() est disponible pour toutes les collections. Autrement dit, Iterator peut être utilisé pour toutes les classes de collection. | La méthode listIterator() est disponible pour les collections qui implémentent l’interface List. Autrement dit, les descendants de l’interface List uniquement peuvent utiliser ListIterator |
Iterator
À l’aide de Iterator, nous ne pouvons itérer qu’en avant et vous ne pouvez pas ajouter des éléments en itérant. Ici, le curseur pointe toujours sur un index spécifique.
import java.util.ArrayList; import java.util.Iterator; public class ExampleIterator { public static void main(String args[]) { ArrayList<String> arraylist = new ArrayList<String>(); arraylist.add("Item1"); arraylist.add("Item2"); arraylist.add("Item3"); arraylist.add("Item4"); Iterator<String> itr = arraylist.iterator(); while (itr.hasNext()) { String str = itr.next(); System.out.print(str + " "); } } }
La sortie
Item1 Item2 Item3 Item4
ListIterator
Permet au programmeur de parcourir la liste dans un sens ou l’autre, de modifier la liste pendant l’itération et d’obtenir la position actuelle de l’itérateur dans la liste.
import java.util.ArrayList; import java.util.ListIterator; public class ExampleListIterator { public static void main(String[] args) { //Créer une ArrayList ArrayList arraylist = new ArrayList(); //Ajouter des éléments à l'objet ArrayList arraylist.add("Item1"); arraylist.add("Item2"); arraylist.add("Item3"); arraylist.add("Item4"); //Récupérer l'objet de ListIterator avec la méthode listIterator() ListIterator listIterator = arraylist.listIterator(); System.out.println("En avant"); while(listIterator.hasNext()) System.out.println(listIterator.next()); System.out.println("En arrière"); while(listIterator.hasPrevious()) System.out.println(listIterator.previous()); } }
La sortie
En avant Item1 Item2 Item3 Item4 En arrière Item4 Item3 Item2 Item1
Les méthodes de l’interface Iterator:
- hasNext()
- next()
- remove()
Les méthodes de l’interface ListIterator:
- add(E e)
- next()
- nextIndex()
- previous()
- previousIndex()
- hasNext()
- hasPrevious()
- set(E e)
Conclusion
L’avantage d’utiliser Iterator est que votre code fonctionnera même si vous passez List ou Set en paramétre, car vous travaillerez avec une collection. Pourtant, lorsque vous utilisez ListIterator, votre code ne fonctionnera qu’avec List.