Post

Iterador

Iterador

Un Iterador es un objeto que se puede utilizar para recorrer colecciones, como ArrayList y HashSet. Se llama “Iterador” porque “Iterar” es el término técnico que se utiliza para recorrer bucles.

Para utilizar un iterador, tenemos que importarlo desde el paquete java.utils

Obtener un iterador

El método iterator() se puede utilizar para obtener un Iterator para cualquier colección

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.util.ArrayList;
import java.util.Iterator;

public class main{
  public static void main(String[] args){

    // Crear la colección
    ArrayList<String> coches = new ArrayList<String>();
    coches.add("Jaguar");
    coches.add("Ford");
    coches.add("BMW");
    coches.add("Mercedes");
    coches.add("Audi");
    coches.add("Porche");

    // Llamar al iterador
    Iterator<String> it = coches.iterator();

    // Imprimir el primer elemento
    System.out.println(it.next());
  }
}

Recorrer una colección

Para recorrer una colección, utilizamos hasNext() y next() que son métodos de iterator.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import java.util.ArrayList;
import java.util.Iterator;

public class main{
  public static void main(String[] args){

    // Crear la colección
    ArrayList<String> coches = new ArrayList<String>();
    coches.add("Jaguar");
    coches.add("Ford");
    coches.add("BMW");
    coches.add("Mercedes");
    coches.add("Audi");
    coches.add("Porche");

    // Llamar al iterador
    Iterator<String> it = coches.iterator();

    // Recorrer la colección
    while(it.hasNetx()) {
      System.out.println(it.next());
    }
  }
}

Eliminar elementos de una colección

Los iteradores están diseñados para cambiar fácilmente las colecciones que recorren. El método remove() puede eliminar elementos de una colección mientras se realiza un bucle.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.util.ArrayList;
import java.util.Iterator;

public class main{
  public static void main(String[] args){
    ArrayList<Integer> numeros = new ArrayList<Integer>();
    numeros.add(12);
    numeros.add(6);
    numeros.add(34);
    numeros.add(9);
    numeros.add(21);
    numeros.add(4);

    Iterator<Integer> it = numeros.iterator();
    while(it.hasNext()){
      Integer i = it.next();
      if (i < 10){
        it.remove();
      }
    }
    System.out.println(numeros);
  }
}

NOTA: Intentar eliminar elementos usando un bucle for o un El bucle for-each no funcionaría correctamente, porque la colección cambia de tamaño al mismo tiempo que el código intenta realizar un bucle.

This post is licensed under CC BY 4.0 by the author.