Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Iterator

List<String> nomes = new ArrayList<>();
nomes.add("Super Mario");
nomes.add("Yoshi"); 
nomes.add("Donkey Kong"); 

Iterator<String> it = nomes.iterator(); 

    /**COMO LEIO ISSO? De onde veio esse Iterator é um padrão de código, mas quem implementa é a classe ou isso está
    * presente em toda Collection?
    * onde tenho que revisar, para entender isso?
    */

while(it.hasNext()) {
  System.out.println(it.next());
}
2 respostas
solução!

Oie Icaro, tudo bem contigo?

Toda collection fornece acesso a um iterator, que é um objeto que implementa a interface "Iterator". No exemplo que você mostrou a implementação acontece dentro de uma classe privada chamada "Itr" que a classe ArrayList tem acesso. Respondendo diretamente suas perguntas:

  1. Quem implementa é a classe ou isso está presente em toda Collection? R: Toda collection apresenta acesso a um objeto que implementa a "classe Iterator", a implementação nesse caso da Arraylist, acontece dentro de uma classe chamada "Itr", mas esse objeto muda dependendo da collection que você está usando.

  2. Onde tenho que revisar, para entender isso? R: Uma das formas para se revisar/ententer isso é olhando a documentação do java (está em inglês), ou dentro do próprio eclipse se você segurar o ctrl e clicar em cima do método "iterator" você será direcionado para onde acontece a implementação. Aqui na Alura também temos dois cursos que comentam um pouco sobre o iterator, Java Collections: Dominando Listas, Sets e Mapas e Certificação Java SE 7 Programmer I: Criando e usando Arrays. Eu também achei alguns artigos bem legais que explicam de uma maneira mais conceitual o uso do iterator, eles são Refactoring Guru - Iterator e Padrão de Projeto Iterator em Java.

Espero ter conseguido ajudar, qualquer outra dúvida fico a disposição :)

Bons estudos!

Boa noite,

Obrigado pelas respostas, eu estou mais avançado, inclusive passando pelo curso de Java.Collections, to conseguindo entender sim o porque e de onde vem =), mesmo assim vou ler os artigos recomendados, quato aos cursos, dentro do possivel farei todos de Java que eu puder.

Desde já, muito obrigado!