
Iteradores são objetos que permitem percorrer elementos de uma coleção de dados, como listas, sets, mapas e outras estruturas de dados. Eles fornecem uma maneira sequencial e sistemática de acessar cada elemento de uma coleção se expor sua implementação interna.
No Java, os iteradores fazem parte de Coleções e são implementados pela interface Iterator, que permite iterar sobre qualquer coleção que implemente a interface Collection.
Modelos da Interface Iterator
Abaixo vamos usar um Iterator com ArrayList:
import java.util.ArrayList;
import java.util.Iterator;
public class Main{
public static void main(String[] args) {
// Criando uma lista de nomes
ArrayList<String> nomes = new ArrayList<>();
nomes.add("Jorge");
nomes.add("Maria");
nomes.add("Carlos");
// Obtendo o iterador
Iterator<String> iterador = nomes.iterator();
// Usando o iterador para percorrer a lista
System.out.println("Percorrendo a lista com um iterador:");
while (iterador.hasNext()) {
String nome = iterador.next();
System.out.println(nome);
}
}
}
/*
Saída:
Jorge
Maria
Carlos
*/
Acima temos uma Lista para armazenar os nomes, chamada de nomes, nela adicionamos usando o método add() e passando os nomes por Strings. Com isso, temos a criação de um Iterator de nome iterador e damos e chamamos o método iterator() da lista nomes para obter um iterador. Esse iterador nos permitirá percorrer a lista.
Dentro de um loop while onde ele irá continuar rodando enquanto estiver elementos na lista, sendo verificado pelo hasNext(). Enquanto ele está em loop, é armazenado em uma variável do tipo String chamada nome o método next() do objeto Iterador, retornando o próximo elemento da lista e avança o iterador para o próximo item na sequência. Após isso, esse resultado é impresso na tela.
Além de ArrayList, você pode usar iteradores com outras coleções, como Set e Map. Para Map, no entanto, o iterador precisa ser usado sobre as chaves( keySet() ), valores ( values() ) ou entradas ( entrySet() ), como no exemplo anterior.
Exemplo de Iterador com HashSet.