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

Porque consome o segundo elemento e não o primeiro?

import java.util.*;
class A {
  public static void main(String[] args) {
    ArrayList<String> a = new ArrayList<String>();
    a.add(0,"a");
    a.add(1,"b");
    for(Iterator<String> i=a.iterator();i.hasNext();i.next()) {
        String element = i.next();
        System.out.println(element);
    }    
}
}
2 respostas
solução!

Oi Danilo, ele está mostrando apenas o segundo por conta do i.next() que você usa na terceira parte ali do for.

Lembre-se que o for executa aquele terceiro pedacinho ali a cada iteração, inclusive na primeira vez. Ou seja, ele entra ali no for e já faz aquele primeiro i.next().

Logo depois ele faz de novo o i.next() da linha String elmeent = i.next(); e aí ele move o iterator para o segundo elemento.

Para que consiga exibir o primeiro elemento, é só remover a terceira parte do for, ficando assim:

for(Iterator<String> i=a.iterator();i.hasNext(); ) {

Creio que essa resposta do Danilo está incorreta! O For só executa de fato a terceira parte relativa ao incremento no final da primeira iteração. Não creio que essa foi a melhor forma de explicar o exercício: "Lembre-se que o for executa aquele terceiro pedacinho ali a cada iteração, inclusive na primeira vez. Ou seja, ele entra ali no for e já faz aquele primeiro i.next()."