listiterator interface java with examples
Ce didacticiel explique l'interface ListIterator en Java pour parcourir les implémentations de liste. Vous découvrirez le diagramme de classes et les méthodes de l'interface ListIterator:
Tout comme Iterator, l'interface ListIterator fournit la fonctionnalité permettant de parcourir les implémentations de liste en Java et d'accéder aux éléments de la liste.
=> Cliquez ici pour voir de A à Z des didacticiels de formation Java ici.
Ce que vous apprendrez:
Interface ListIterator en Java
Certaines des principales caractéristiques de l'interface ListIterator sont répertoriées ci-dessous:
- ListIterator a été introduit dans Java 1.2
- ListIterator est une sous-interface de l'interface Iterator, c'est-à-dire qu'elle s'étend à partir de l'interface Iterator.
- ListIterator fonctionne uniquement avec les implémentations de liste.
- ListIterator prend en charge toutes les opérations à savoir, Créer, Lire, Mettre à jour et Supprimer. (Collectivement appelées opérations CRUD).
- ListIterator est un itérateur bidirectionnel et il prend en charge les itérateurs de direction avant et arrière.
- Dans le cas de ListIterator, il n'y a pas d'élément courant. La position du curseur pointe vers l'emplacement entre l'élément retourné par la méthode previous () et l'élément qui serait retourné par la méthode next ().
Parlons plus en détail de cette interface dans ce didacticiel.
Diagramme de classes ListIterator
ListIterator est une interface qui appartient au framework API Collections. Cette interface s'étend de l'interface Iterator. Outre l'héritage des méthodes de l'interface Iterator, il prend également en charge les méthodes pour les itérations bidirectionnelles et les opérations CRUD.
Le diagramme de classes de l'interface ListIterator est illustré ci-dessous.
La figure ci-dessus montre le diagramme de classes de l'interface ListIterator. Dans la section suivante, nous discuterons en détail de chacune des méthodes présentées dans la figure.
Méthodes ListIterator
L'interface ListIterator fournit les méthodes suivantes, comme indiqué dans le tableau ci-dessous.
Nom de la méthode | Prototype | Description |
---|---|---|
supprimer() | void remove () | Supprime le dernier élément renvoyé par la méthode next () ou previous (). |
hasNext () | booléen hasNext () | Vérifie si listIterator a plus d'éléments à traverser dans le sens avant. |
suivant() | E suivant () | Renvoie l'élément suivant de la liste. Déplace ensuite le curseur pour pointer vers l'élément suivant. |
hasPrevious () | booléen hasPrevious () | Vérifie si ListIterator a plus d'éléments dans le sens arrière / inverse. |
précédent() | E précédent () | Renvoie l'élément précédent de la liste et déplace le curseur vers une position vers l'arrière. |
nextIndex() | int nextIndex() | Renvoie l'index de l'élément qui sera retourné par l'appel à la méthode next (). |
previousIndex () | int previousIndex () | Renvoie l'index de l'élément qui sera retourné par l'appel à la méthode previous (). |
Sept) | ensemble vide (E et) | Remplace le dernier élément renvoyé par la méthode next () ou previous () par la nouvelle valeur. |
ajouter (E) | void add (E e) | Ajoute un nouvel élément à la liste. |
Ensuite, nous décrirons chacune de ces méthodes en détail.
# 1) hasNext ()
Prototype: booléen hasNext ()
Paramètres: NÉANT
Valeur de retour:
- true => la liste a l'élément suivant
- False => la liste n'a plus d'éléments
Description: Cette méthode vérifie si ListIterator a plus d'éléments à traverser dans la direction avant. S'il contient plus d'éléments, cette méthode renvoie true.
# 2) suivant ()
Prototype: E suivant ()
Paramètres: NÉANT
Valeur de retour: E => élément suivant de la liste.
Description: La méthode next () retourne l'élément suivant dans la liste et déplace le curseur vers l'élément suivant.
Exception levée: NoSuchElementException - si ListIterator n'a pas d'élément suivant.
# 3) aPrevious ()
Prototype: booléen hasPrevious ()
Paramètres: NÉANT
Valeur de retour: true => le ListIterator a un élément précédent
Description: Vérifie si ListIterator a plus d'éléments dans le sens arrière / inverse.
# 4) précédent ()
Prototype: E précédent ()
Paramètres: NÉANT
Valeur de retour: E => élément précédent de la liste
Description: Cette méthode retourne l'élément précédent de la liste lors du déplacement vers l'arrière, puis déplace le curseur vers l'arrière.
Exception levée: NoSuchElementException - si ListIterator n'a pas d'élément suivant.
#5) nextIndex ()
Prototype: int nextIndex ()
Paramètres: NÉANT
Valeur de retour: int => index de l'élément qui sera retourné par la méthode next () ou taille de la liste si ListIterator est à la fin de la liste.
Description: Cette méthode peut être appelée avant la méthode next (). La méthode nextIndex () renvoie l'index de l'élément qui sera retourné par la méthode next (). Si ListIterator se trouve à la fin de la liste, cette méthode renvoie la taille de la liste.
# 6) previousIndex ()
Prototype: int previousIndex ()
Paramètres: NÉANT
Valeur de retour: int => index de l'élément qui sera retourné par la méthode previous () ou -1 si ListIterator est au début de la liste.
Questions et réponses d'entretien d'ingénieur réseau à Cisco
Description: Cette méthode peut être appelée avant la méthode previous (). La méthode previousIndex () retourne l'index de l'élément qui sera retourné par la méthode previous (). Si ListIterator est au début de la liste, la méthode renvoie -1.
# 7) supprimer ()
Prototype: void remove ()
Paramètres: NÉANT
Valeur de retour: annuler
Description: La méthode remove () supprime le dernier élément renvoyé par la méthode previous () ou next (). L'appel à la méthode remove () ne peut être effectué qu'une seule fois par appel à la méthode next () ou previous ().
Exception levée:
- UnsupportedOperationException - ListIterator ne prend pas en charge l'opération de suppression.
- IllegalStateException - Si l'opération en cours est dans un état illégal, c'est-à-dire que ni suivant ni précédent n'ont encore été appelés ou après l'appel à suivant ou précédent, alors add ou remove n'ont pas été appelés.
# 8) ensemble (E)
Prototype: ensemble vide (E et)
Paramètres: e => nouvel élément par lequel l'ancien élément doit être remplacé
Valeur de retour: annuler
Description: La méthode set () définit l'élément renvoyé par la méthode previous () ou next () avec la nouvelle valeur passée en argument. Cette méthode ne peut être appelée que si la méthode add () ou remove () n'est pas appelée après le dernier appel à la méthode previous () ou next ().
Exception levée:
- UnsupportedOperationException - ListIterator ne prend pas en charge l'opération set.
- ClassCastException - Si l'élément spécifié ne peut pas être ajouté en raison de sa classe.
- IllegalArgumentException - Si l'élément / l'argument ajouté est illégal ou invalide.
- IllegalStateException - Si l'opération en cours est dans un état illégal, c'est-à-dire que ni suivant ni précédent n'ont encore été appelés ou après l'appel à suivant ou précédent, add ou remove n'ont pas été appelés.
# 9) ajouter (E)
Prototype: void add (E e)
Paramètres: e => nouvel élément à ajouter à la liste
Valeur de retour: annuler
quelle est la meilleure application d'espionnage de téléphone portable
Description: La méthode add () est utilisée pour ajouter un nouvel élément à la liste. L'élément est ajouté juste avant l'élément que next () aurait renvoyé, le cas échéant et après l'élément que la méthode previous () aurait renvoyé.
Notez que, suite à l'ajout d'un élément, il n'y aurait pas de changement pour renvoyer la valeur de next () mais la méthode previous () ne retournera que l'élément ajouté.
Exception levée:
- UnsupportedOperationException - ListIterator ne prend pas en charge la méthode add.
- ClassCastException s'il s'agit d'un élément spécifié qui ne peut pas être ajouté en raison de sa classe.
- IllegalArgumentException si l'élément / l'argument ajouté est illégal ou invalide.
Le programme Java suivant montre une démonstration de toutes les méthodes ListIterator ci-dessus.
import java.util.*; public class Main{ public static void main(String args()){ //define list and add elements to it ListnameList=new ArrayList(); nameList.add('Savich'); nameList.add('Dane'); nameList.add('Lacey'); nameList.add(1,'James'); System.out.println('Original List:' + nameList); //define a list iterator for this list ListIterator list_itr=nameList.listIterator(); System.out.println('List elements in forward direction:'); //while there are still elements in the list, display next index and element while(list_itr.hasNext()){ System.out.println('Index:'+list_itr.nextIndex()+' Element:'+list_itr.next()); } //call set() method to set next value to 'Sally' list_itr.set('Sally'); System.out.println('
List after set('Sally'):' + nameList); //while there are elements in the list, display previous index and element System.out.println('
List elements in backward direction:'); while(list_itr.hasPrevious()){ System.out.println('Index:'+list_itr.previousIndex()+' Element:'+list_itr.previous()); } //call remove () method list_itr.remove(); System.out.println('List after remove():' + nameList); } }
Production:
Interface ListIterator dans les exemples Java
Voyons un autre exemple d'utilisation de ListIterator. Dans ce programme, nous avons une ArrayList de valeurs entières. Ensuite, en utilisant ListIterator, nous parcourons la liste et affichons les éléments de la liste.
De plus, nous ne sélectionnons que les éléments pairs dans ArrayList et modifions leurs valeurs en nombres impairs à l'aide des méthodes ListIterator.
import java.util.ArrayList; import java.util.ListIterator; public class Main { public static void main(String() args) { //define ArrayList and add values to it using for loop ArrayList intList = new ArrayList(); for (int i = 0; i <10; i++) intList.add(i+2); System.out.println('Original ArrayList:' + intList); // define the ListIterator ListIterator list_itr = intList.listIterator(); System.out.println('List elements using listIterator:'); //while list has more elements while (list_itr.hasNext()) { //retrieve next element int i = (Integer)list_itr.next(); // print the element System.out.print(i + ' '); // change only even numbers to odd by setting value = value +1 to current element if (i%2==0) { list_itr.set(i+1); // set method to change value } } System.out.println(); System.out.println('Final ArrayList of odd values:' + intList); } }
Production:
Questions fréquemment posées
Q # 1) Qu'entend-on par itérateur?
Répondre: Iterator est une interface qui fait partie du framework Collection en Java. Cette interface est présente dans le package java.util. L'interface de l'itérateur est utilisée pour parcourir la collection d'objets.
Q # 2) Qu'est-ce qu'une interface d'itérateur en Java?
Répondre: Une interface d'itérateur en Java est utilisée à la place des énumérations qui étaient auparavant utilisées dans Java Collection Framework. L'interface de l'itérateur est présente en Java depuis la version 1.2.
À l'aide de cette interface, vous pouvez parcourir toutes les collections Java et traiter les éléments de la collection.
Q # 3) Quelle est l'utilité de la méthode listIterator () en Java?
Répondre: La méthode listIterator () appartient au package java.util. *. Cette méthode renvoie un itérateur de liste pour l'objet de liste particulier qui l'a appelé et peut être utilisée pour parcourir les listes et accéder aux éléments. Le listIterator ne fonctionne que sur les implémentations de liste.
Q # 4) L'itérateur est-il une classe ou une interface?
Répondre: Iterator n'est pas une classe mais un interface en Java . L'interface Iterator peut être implémentée par les autres classes et utilisée pour parcourir des éléments de liste ou de collection.
Q # 5) Combien de types d'itérateurs existe-t-il en Java?
Répondre: Les itérateurs en Java sont de trois types:
- Énumérations: C'est une interface qui permet de lire les éléments de collections comme Vector, hashtable, etc. Chaque élément est numéroté en fonction de sa position dans la collection.
- Itérateur: Vous pouvez appeler cette interface universelle car vous pouvez l'appliquer à n'importe quel objet de collection pour traverser la collection. Il s'agit d'une énumération améliorée avec une fonctionnalité de suppression et la possibilité de lire un élément.
- ListIterator: ListIterator est une interface qui fournit l'itération bidirectionnelle, c'est-à-dire dans les directions avant et arrière. ListIterator ne fonctionne qu'avec les implémentations de liste, y compris LinkedList, ArrayList, etc.
Conclusion
L'interface ListIterator en Java est dérivée de l'interface Iterator. En plus d'hériter directement des méthodes de l'interface Iterator, l'interface listIterator introduit diverses méthodes qui peuvent aider le programmeur à effectuer une itération bidirectionnelle.
Dans ce tutoriel, nous avons discuté du diagramme de classes et des différentes méthodes de l'interface ListIterator. Nous avons également vu la mise en œuvre de ces méthodes ainsi que les moyens de parcourir diverses listes.
=> Visitez ici pour voir la série de formations Java pour tous.
lecture recommandée
- Tutoriel sur l'interface Java et les classes abstraites avec des exemples
- Tutoriel JAVA pour les débutants: plus de 100 tutoriels vidéo Java pratiques
- Java Iterator: Apprenez à utiliser les itérateurs en Java avec des exemples
- Tutoriel Java Array Length avec des exemples de code
- Jagged Array In Java - Tutoriel avec des exemples
- Inverser un tableau en Java - 3 méthodes avec des exemples
- Comment trier un tableau en Java - Tutoriel avec des exemples
- Principales fonctionnalités de Java 8 avec des exemples de code