listiterator interface java with examples
Aquest tutorial explica la interfície ListIterator a Java per recórrer les implementacions de la llista. Coneixerà el diagrama de classes i els mètodes de la interfície ListIterator:
Igual que Iterator, la interfície ListIterator proporciona la funcionalitat per recórrer les implementacions de la llista a Java i accedir als elements de la llista.
=> Consulteu aquí per veure aquí A-Z de tutorials de formació.
Què aprendreu:
Interfície ListIterator a Java
A continuació es detallen algunes de les característiques principals de la interfície ListIterator:
- ListIterator es va introduir a Java 1.2
- ListIterator és una subinterfície de la interfície Iterator, és a dir, que s’estén des de la interfície Iterator.
- ListIterator només funciona amb implementacions de llistes.
- ListIterator admet totes les operacions, és a dir, crear, llegir, actualitzar i suprimir. (Anomenades col·lectivament operacions CRUD).
- ListIterator és un iterador bidireccional i admet iteradors de direcció cap endavant i cap enrere.
- En el cas de ListIterator, no hi ha cap element actual. La posició del cursor apunta a la ubicació entre l'element retornat pel mètode previous () i l'element que es retornaria pel mètode next ().
Discutim més sobre aquesta interfície en aquest tutorial.
Diagrama de classes ListIterator
ListIterator és una interfície que pertany al marc de l'API de col·leccions. Aquesta interfície s’estén des de la interfície Iterator. A part d’heretar els mètodes de la interfície Iterator, també admet els mètodes per a les iteracions bidireccionals i les operacions CRUD.
A continuació es mostra el diagrama de classes de la interfície ListIterator.
La figura anterior mostra el diagrama de classes de la interfície ListIterator. A la següent secció, analitzarem detalladament cadascun dels mètodes que es mostren a la figura.
Mètodes ListIterator
La interfície ListIterator proporciona els mètodes següents, tal com es mostra a la taula següent.
Nom del mètode | Prototip | Descripció |
---|---|---|
remove () | void remove () | Elimina l’últim element retornat pel mètode next () o previous (). |
hasNext () | booleà hasNext () | Comprova si listIterator té més elements per recórrer en direcció endavant. |
Pròxim() | E next () | Retorna el següent element de la llista. A continuació, mou el cursor per assenyalar l'element següent. |
hasPrevious () | booleà hasPrevious () | Comprova si ListIterator té més elements en la direcció cap enrere / cap enrere. |
anterior () | E anterior () | Retorna l'element anterior de la llista i mou el cursor a una posició cap enrere. |
nextIndex () | int nextIndex () | Retorna l'índex de l'element que es retornarà mitjançant una trucada al mètode next (). |
previousIndex () | int previousIndex () | Retorna l'índex de l'element que es retornarà mitjançant una trucada al mètode previous (). |
set) | conjunt buit (E i) | Substitueix l'últim element retornat pel mètode next () o previous () pel nou valor. |
afegir (E) | void add (E e) | Afegeix un element nou a la llista. |
A continuació, descriurem detalladament cadascun d’aquests mètodes.
# 1) hasNext ()
Prototip: booleà hasNext ()
Paràmetres: NUL
Valor de retorn:
- true => llista té el següent element
- Fals => la llista no té més elements
Descripció: Aquest mètode comprova si el ListIterator té més elements per recórrer en la direcció cap endavant. Si té més elements, aquest mètode torna cert.
# 2) next ()
Prototip: E next ()
Paràmetres: NUL
Valor de retorn: E => següent element de la llista.
Descripció: El mètode next () retorna l'element següent de la llista i mou el cursor a l'element següent.
Excepció llançada: NoSuchElementException: si el ListIterator no té cap element següent.
# 3) hasPrevious ()
Prototip: booleà hasPrevious ()
Paràmetres: NUL
Valor de retorn: true => el ListIterator té un element anterior
Descripció: Comprova si ListIterator té més elements en la direcció cap enrere / cap enrere.
# 4) anterior ()
Prototip: E anterior ()
Paràmetres: NUL
Valor de retorn: E => element anterior de la llista
Descripció: Aquest mètode retorna l'element anterior de la llista mentre es desplaça cap enrere i després mou el cursor cap enrere.
Excepció llançada: NoSuchElementException: si el ListIterator no té cap element següent.
# 5) nextIndex ()
Prototip: int nextIndex ()
Paràmetres: NUL
Valor de retorn: int => índex de l'element que es retornarà pel mètode o la mida següent () o la mida de la llista si ListIterator es troba al final de la llista.
Descripció: Aquest mètode es pot anomenar abans del mètode next (). El mètode nextIndex () retorna l'índex de l'element que el mètode next () retornarà. Si el ListIterator es troba al final de la llista, aquest mètode retorna la mida de la llista.
# 6) previousIndex ()
Prototip: int previousIndex ()
Paràmetres: NUL
Valor de retorn: int => índex de l'element que serà retornat pel mètode previous () o -1 si ListIterator es troba al començament de la llista.
Descripció: Aquest mètode es pot anomenar abans del mètode previous (). El mètode previousIndex () retorna l'índex de l'element que el mètode previous () retornarà. Si ListIterator es troba al principi de la llista, el mètode retorna -1.
# 7) elimina ()
Prototip: void remove ()
Paràmetres: NUL
Valor de retorn: buit
Descripció: El mètode remove () suprimeix l'últim element retornat pel mètode previous () o next (). La trucada al mètode remove () només es pot fer una vegada per trucada al mètode next () o anterior ().
Excepció llançada:
- UnsupportedOperationException: ListIterator no admet l’operació d’eliminació.
- IllegalStateException: si l'operació actual es troba en un estat il·legal, és a dir, ni el següent ni l'anterior no s'han cridat encara o després de la trucada al següent o l'anterior, no s'han cridat a afegir o eliminar.
# 8) conjunt (E)
Prototip: conjunt buit (E i)
Paràmetres: e => element nou amb el qual s'ha de substituir l'element antic
Valor de retorn: buit
Descripció: El mètode set () estableix l'element retornat pel mètode previous () o next () amb el nou valor passat com a argument. Aquest mètode només es pot cridar si el mètode add () o remove () no es crida després de la darrera trucada al mètode previous () o next ().
Excepció llançada:
- UnsupportedOperationException: ListIterator no admet l'operació establerta.
- ClassCastException: si no es pot afegir l'element especificat a causa de la seva classe.
- IllegalArgumentException: si l’element / argument que s’afegeix és il·legal o no és vàlid.
- IllegalStateException: si l’operació actual es troba en un estat il·legal, és a dir, encara no s’han trucat al següent ni a l’anterior ni després de la trucada al següent o a l’anterior, no s’han cridat a afegir o eliminar.
# 9) afegir (E)
Prototip: void add (E e)
Paràmetres: e => nou element per afegir a la llista
Valor de retorn: buit
Descripció: El mètode add () s’utilitza per afegir un element nou a la llista. L'element s'afegeix just abans de l'element que hauria retornat next (), si n'hi ha, i després de l'element que hauria retornat el mètode previous ()
Tingueu en compte que, com a resultat d'afegir un element, no hi hauria cap canvi per retornar el valor de next (), però el mètode previous () retornarà només l'element afegit.
Excepció llançada:
- UnsupportedOperationException: ListIterator no admet el mètode add.
- ClassCastException si un element especificat que no es pot afegir a causa de la seva classe.
- IllegalArgumentException si l’element / argument que s’afegeix és il·legal o no és vàlid.
El següent programa Java mostra una demostració de tots els mètodes ListIterator anteriors.
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); } }
Sortida:
Interfície ListIterator en exemples de Java
Vegem un altre exemple d'ús de ListIterator. En aquest programa, tenim una ArrayList de valors enters. A continuació, amb ListIterator recorrem la llista i mostrem els elements de la llista.
A més, només escollim elements parells a la llista Array i canviam els seus valors a nombres senars mitjançant els mètodes 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); } }
Sortida:
exemple per a la interfície abstracta a Java
Preguntes freqüents
P # 1) Què s'entén per iterador?
Resposta: Iterator és una interfície que forma part del marc de col·lecció de Java. Aquesta interfície està present al paquet java.util. La interfície iteradora s’utilitza per recórrer la col·lecció d’objectes.
Q # 2) Què és una interfície iteradora a Java?
Resposta: S'utilitza una interfície iteradora a Java en lloc d'enumeracions que anteriorment s'utilitzaven a Java Collection Framework. La interfície iteradora està present a Java des de la versió 1.2.
Mitjançant aquesta interfície podeu recórrer qualsevol col·lecció Java i processar els elements de la col·lecció.
P # 3) Què utilitza el mètode listIterator () a Java?
Resposta: El mètode listIterator () pertany al paquet java.util. *. Aquest mètode retorna un iterador de llista per a l'objecte de llista concret que l'ha invocat i es pot utilitzar per recórrer les llistes i els elements d'accés. El listIterator només funciona en implementacions de llista.
Q # 4) L'iterador és una classe o una interfície?
Resposta: Iterator no és una classe sinó un interfície a Java . La interfície iteradora pot ser implementada per les altres classes i usada per iterar mitjançant elements de llista o col·lecció.
P # 5) Quants tipus d'iteradors hi ha a Java?
Resposta: Els iteradors a Java són de tres tipus:
- Enumeracions: Es tracta d’una interfície que s’utilitza per llegir els elements de col·leccions com Vector, hashtable, etc. Cada element està numerat segons la seva posició a la col·lecció.
- Iterador: Podeu anomenar aquesta interfície universal ja que la podeu aplicar a qualsevol objecte de col·lecció per recórrer la col·lecció. Es tracta d’una enumeració millorada amb funcionalitat d’eliminació juntament amb la possibilitat de llegir un element.
- ListIterator: ListIterator és una interfície que proporciona la iteració bidireccional, és a dir, en direccions cap endavant i cap enrere. ListIterator només funciona amb implementacions de llistes com ara LinkedList, ArrayList, etc.
Conclusió
La interfície ListIterator a Java es deriva de la interfície Iterator. A més d’heretar directament els mètodes de la interfície Iterator, la interfície listIterator introdueix diversos mètodes propis que poden ajudar el programador a realitzar la iteració bidireccional.
En aquest tutorial, hem comentat el diagrama de classes i els diversos mètodes de la interfície ListIterator. També hem vist la implementació d’aquests mètodes juntament amb les maneres de recórrer diverses llistes.
=> Visiteu aquí per veure la sèrie d'entrenaments de Java per a tothom.
Lectura recomanada
- Interfície Java i tutoria de classes abstractes amb exemples
- Tutorial JAVA per a principiants: més de 100 tutorials pràctics de vídeo Java
- Java Iterator: apreneu a utilitzar els iteradors a Java amb exemples
- Tutorial de longitud de matriu de Java amb exemples de codi
- Matriu dentada a Java: tutorial amb exemples
- Inverteix una matriu a Java: 3 mètodes amb exemples
- Com ordenar una matriu a Java: tutorial amb exemples
- Funcions destacades de Java 8 amb exemples de codi