Iterator
El patrón Iterator es un patrón de diseño de comportamiento que se usa para acceder secuencialmente a los elementos de una colección (como una lista, conjunto o mapa) sin exponer los detalles internos de su implementación.
El patrón define un objeto denominado iterator que permite recorrer los elementos de una colección uno a uno. La ventaja es que el acceso es independiente de la estructura interna de la colección.
Componentes del patrón Iterator
Los componentes del patrón Iterator son:
- Iterador (
Iterator): Define la interfaz para acceder a los elementos de una colección. Normalmente incluye métodos como:hasNext(): Comprueba si hay más elementos por iterar.next(): Devuelve el siguiente elemento de la colección.
- Colección: Define una interfaz para obtener un iterator. La colección delega en el iterador la responsabilidad de recorrer sus elementos.
- Iterador concreto: Implementa la interfaz del iterador. Gestiona la posición actual de la iteración y devuelve los elementos cuando se le solicita.
- Colección concreta: Implementa la interfaz de la colección y proporciona el iterador.
En Java tenemos ya implementado dicho patrón:
ArrayListimplementa una interfaz llamadaIterableque contiene el métodoiterator()que devuelve un iterador.- El iterador permite recorrer los elementos sin necesidad de conocer cómo está implementada internamente la lista.
- Usamos
hasNext()para comprobar si hay más elementos ynext()para acceder a ellos.
import java.util.Iterator;
import java.util.ArrayList;
public class EjemploIterator {
public static void main(String[] args) {
// Crear una colección (un ArrayList)
ArrayList<String> lista = new ArrayList<>();
lista.add("Elemento 1");
lista.add("Elemento 2");
lista.add("Elemento 3");
// Obtener el iterador de la colección
Iterator<String> iterador = lista.iterator();
// Recorrer la colección usando el iterador
while (iterador.hasNext()) {
String elemento = iterador.next();
System.out.println(elemento);
}
}
}