Saltar al contenido principal
Documentos
Java keywordsMatrices JavaProgramación orientada a objetos en JavaJava File HandlingIntroducción a JavaConceptos básicos del lenguaje Java

Java Iterator

El Iterator en Java es una interfaz que proporciona una forma de recorrer una colección de objetos, como listas o conjuntos, elemento a elemento. Forma parte del Marco de Colecciones de Java y se encuentra en el paquete java.util. La interfaz Iterator se utiliza para acceder secuencialmente a los elementos de una colección sin exponer la estructura subyacente de la colección.

Métodos clave

La interfaz Iterator proporciona tres métodos principales:

  • hasNext(): Devuelve true si la iteración tiene más elementos. Permite comprobar si hay más elementos sobre los que iterar.
    boolean hasNext();
  • next(): Devuelve el siguiente elemento de la iteración. Debe llamarse después de hasNext() para asegurarse de que hay un elemento siguiente.
    E next();
  • remove(): Elimina el último elemento devuelto por el método next() de la colección subyacente. Este método es opcional y puede lanzar UnsupportedOperationException si la colección no admite la eliminación.
    void remove();

Ejemplos

Ejemplo 1: Uso básico con Lista

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class IteratorExample {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("Apple");
        list.add("Banana");
        list.add("Cherry");

        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()) {
            String fruit = iterator.next();
            System.out.println(fruit);
        }
    }
}

En este ejemplo, se crea un ArrayList de cadenas y se rellena con nombres de frutas. Se obtiene un Iterator de la lista para recorrer e imprimir cada fruta.

Ejemplo 2: Eliminar elementos

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class RemoveExample {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("Apple");
        list.add("Banana");
        list.add("Cherry");

        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()) {
            String fruit = iterator.next();
            if ("Banana".equals(fruit)) {
                iterator.remove();
            }
        }
        System.out.println(list);
    }
}

Este ejemplo muestra cómo eliminar elementos de una lista utilizando Iterator. El elemento "Plátano" se elimina durante la iteración.

Consejos y buenas prácticas

  • Utiliza hasNext() Antes de next(): Comprueba siempre hasNext() antes de llamar a next() para evitar NoSuchElementException.
  • Evita la ConcurrentModificationException: No modifiques directamente la colección mientras iteras sobre ella. Utiliza el método remove() de Iterator para eliminar elementos de forma segura.
  • Utiliza el bucle For mejorado siempre que sea posible: Para iteraciones sencillas en las que no es necesaria la eliminación, el bucle for mejorado de Java (for-each) puede ser más conciso y legible.
  • Comprender las operaciones no admitidas: No todas las colecciones admiten la operación remove(). Conoce las capacidades de la colección para evitar UnsupportedOperationException.
  • Considera alternativas: Para necesidades de iteración más complejas, considera el uso de ListIterator, que proporciona capacidades adicionales como la iteración bidireccional y la modificación de elementos.

Aprende Java Essentials

Desarrolla tus conocimientos de Java desde la base y domina los conceptos de programación.
Empieza a aprender gratis