Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

por que não aparece a letra B ?

Código:

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);
    }    
}
}

-Eu não me conformei em não entender. com a ajuda de um caderno e caneta escrevi:

for (Iterator<String> i = a.iterator();    i. hasNext();    i.next() ){
      //primeira execução FOR i = 2;      i. hasNext() = true;  i.next() = 0;
    
        String element = i.next();
        //element = indice 1, element "a";     
        
        System.out.println(element);
        //  a

    }
     //segunda execução FOR i = 2;      i. hasNext() = false;  i.next() = 2;
    
1 resposta
solução!

Oii, Luiz! Tudo bem?

Isso está acontecendo, pois o i.next() está sendo chamado duas vezes em cada ciclo do loop. A primeira chamada está na condição do loop for e a segunda dentro do bloco do loop, quando você atribui o valor a element.

O método next() do Iterator não apenas retorna o próximo elemento, mas também move o cursor do Iterator para o próximo elemento. Portanto, a cada ciclo, você está pulando um elemento, imprimindo apenas o a

Para corrigir isso, sugiro que remova a chamada i.next() na condição do loop. O método hasNext() é suficiente para verificar se há mais elementos.

Segue um exemplo do código:

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();) {
        String element = i.next();
        System.out.println(element);
    }    
  }
}

Espero ter ajudado. Qualquer dúvida, não hesite em recorrer ao fórum.

Bons estudos, Luiz!