ListIterator es uno de los cuatro cursores de Java. Es un iterador de Java que se usa para recorrer todo tipo de listas, incluidas ArrayList , Vector , LinkedList , Stack, etc. Está disponible desde Java 1.2. Extiende la interfaz del iterador . La jerarquía de ListIterator es la siguiente:
Algunos puntos importantes sobre ListIterator
- Es útil para listar clases implementadas.
- Disponible desde java 1.2.
- Admite recorrido bidireccional. es decir, tanto hacia adelante como hacia atrás.
- Admite las cuatro operaciones CRUD (Crear, Leer, Actualizar, Eliminar).
Dato interesante sobre ListIterator
No hay ningún elemento actual en ListIterator. Su cursor siempre se encuentra entre los elementos anterior y siguiente. El anterior() volverá a los elementos anteriores y el siguiente() volverá al siguiente elemento. Por tanto, para una lista de n longitud, hay n+1 cursores posibles.
Sintaxis: Declaración
public interface ListIterator<E> extends Iterator<E>
Donde E representa el tipo genérico, es decir, cualquier parámetro de cualquier tipo/objeto definido por el usuario.
Sintaxis: para obtener un iterador de lista en una lista
ListIterator<E> listIterator()
Esto devuelve el iterador de lista de todos los elementos de la lista.
Ejemplo:
Java
// Java Program to Show the Usage of listIterator import java.util.*; public class ListIteratorDemo { // Main driver method public static void main(String[] args) { // Creating a list of names List<String> names = new LinkedList<>(); names.add("Welcome"); names.add("To"); names.add("Gfg"); // Getting ListIterator ListIterator<String> namesIterator = names.listIterator(); // Traversing elements using next() method while (namesIterator.hasNext()) { System.out.println(namesIterator.next()); } // for-each loop creates Internal Iterator here. for (String s : names) { System.out.println(s); } } }
Welcome To Gfg Welcome To Gfg
ListIterator es un iterador bidireccional. Para esta funcionalidad, tiene dos tipos de métodos:
1. Iteración de dirección de avance
- hasNext(): este método devuelve verdadero cuando la lista tiene más elementos para recorrer mientras se atraviesa en la dirección de avance
- next(): este método devuelve el siguiente elemento de la lista y avanza la posición del cursor.
- nextIndex(): este método devuelve el índice del elemento que se devolvería al llamar a la función next().
2. Iteración de dirección hacia atrás
- hasPrevious(): este método devuelve verdadero cuando la lista tiene más elementos para recorrer mientras se atraviesa en la dirección inversa
- anterior(): este método devuelve el elemento anterior de la lista y desplaza el cursor una posición hacia atrás.
- anteriorIndex(): este método devuelve el índice del elemento que se devolvería al llamar a la función anterior().
Código de ejemplo que muestra las iteraciones de dirección tanto hacia adelante como hacia atrás usando el Iterador de lista:
Java
// Java Program to traverse the list both in forward and // backward direction using listIterator import java.util.*; public class GFG { public static void main(String[] args) { // list of names List<String> names = new LinkedList<>(); names.add("learn"); names.add("from"); names.add("Geeksforgeeks"); // Getting ListIterator ListIterator<String> listIterator = names.listIterator(); // Traversing elements System.out.println("Forward Direction Iteration:"); while (listIterator.hasNext()) { System.out.println(listIterator.next()); } // Traversing elements, the iterator is at the end // at this point System.out.println("Backward Direction Iteration:"); while (listIterator.hasPrevious()) { System.out.println(listIterator.previous()); } } }
Forward Direction Iteration: learn from Geeksforgeeks Backward Direction Iteration: Geeksforgeeks from learn
Métodos de iterador de ArrayList
A. listIterator(): El método listIterator() de la clase java.util.ArrayList se utiliza para devolver un iterador de lista sobre los elementos de esta lista (en la secuencia adecuada). El iterador de lista devuelto es a prueba de fallas.
Sintaxis:
public ListIterator listIterator()
Valor devuelto: este método devuelve un iterador de lista sobre los elementos de esta lista (en la secuencia adecuada).
B. listIterator(índice int)
Este método listIterator(int index) se usa para devolver un iterador de lista sobre los elementos de esta lista (en la secuencia adecuada), comenzando en la posición especificada en la lista. El índice especificado indica el primer elemento que devolvería una llamada inicial a next. Una llamada inicial a la anterior devolvería el elemento con el índice especificado menos uno. El iterador de lista devuelto es a prueba de fallas.
Sintaxis:
public ListIterator listIterator(int index)
Parámetros: este método toma el índice del primer elemento como un parámetro que devolverá el iterador de la lista (mediante una llamada a next)
Valor de retorno: este método devuelve un iterador de lista sobre los elementos de esta lista (en la secuencia adecuada), comenzando en la posición especificada en la lista.
Excepción: este método genera una excepción IndexOutOfBoundsException si el índice está fuera de rango (tamaño del índice()).
ventajas:
- Admite las cuatro operaciones CRUD (Crear, Leer, Actualizar, Eliminar).
- Admite desplazamiento bidireccional, es decir, iteración de dirección tanto hacia adelante como hacia atrás.
- Los nombres de métodos simples son fáciles de usar.
Limitaciones:
- Este iterador es solo para clases de implementación de listas.
- No es un cursor universal.
- No es aplicable a todas las API de recopilación.
- El iterador de lista no admite la iteración paralela de elementos.
- listiterator no admite el buen rendimiento de la iteración de numerosos elementos.
Iterador v/s ListIterator
similitudes:
- Ambos se introducen en Java 1.2.
- Ambos se utilizan para listas de iteraciones.
- Ambos admiten el recorrido de dirección hacia adelante.
- Ambos admiten operaciones de LECTURA y ELIMINACIÓN.
Diferencias:
iterador |
ListIterator |
---|---|
Puede atravesar una colección de cualquier tipo. | Atraviesa solo clases implementadas de colección de listas como LinkedList , ArrayList, etc. |
El recorrido solo se puede realizar en la dirección de avance. | El recorrido de los elementos se puede realizar tanto en dirección hacia adelante como hacia atrás. |
El objeto Iterator se puede crear llamando al método iterator() de la interfaz de colección. | El objeto ListIterator se puede crear llamando al método listIterator() de la interfaz de colección. |
No se permite la eliminación de elementos. | Se permite la eliminación de elementos. |
Lanza ConcurrentModificationException al realizar una operación de suma. Por lo tanto, la adicción no está permitida. | Se permite la adición de elementos. |
En el iterador, no podemos acceder al índice del elemento atravesado. | En listIterator, tenemos los métodos nextIndex() y previousIndex() para acceder a los índices del elemento atravesado o del siguiente elemento atravesado. |
No se permite la modificación de ningún elemento. | Se permite la modificación. |
Métodos de ListIterator
Método |
Descripción |
---|---|
añadir (E mi) | Este método inserta el elemento especificado en la lista. |
tieneSiguiente(), | Esto devuelve verdadero si la lista tiene más elementos para recorrer. |
tieneAnterior() | Esto devuelve verdadero si el iterador de lista tiene más elementos mientras recorre la lista en dirección hacia atrás. |
Siguiente() | Este método devuelve el siguiente elemento y aumenta el cursor en una posición. |
siguienteÍndice() | Este método devuelve el índice del elemento que se devolvería al llamar al método next(). |
anterior() | Este método devuelve el elemento anterior de la lista y desplaza el cursor una posición hacia atrás. |
índice anterior() | Este método devuelve el índice del elemento que se devolvería al llamar al método anterior(). |
retirar() | Este método elimina el último elemento de la lista que se devolvió al llamar al elemento del método next() o anterior(). |
conjunto(E e) | Este método reemplaza el último elemento que se devolvió al llamar al método next() o anterior() con el elemento especificado. |
Métodos declarados en la interfaz java. util.Iterator
Método |
Descripción |
---|---|
vacío predeterminado para cada resto (acción Consumer<? super E>) | Realiza la acción dada para cada elemento restante hasta que se hayan procesado todos los elementos o la acción genere una excepción. |
Publicación traducida automáticamente
Artículo escrito por goelshubhangi3118 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA