Foreach

Alguem poderia me explicar o uso e sintaxe de foreach??

obrigado.

Segue um exemplo… Trata-se de um simplificado do nosso grande “for”… No caso abaixo, ele armazenará cada uma das posição da lista na String “s” e imprimirá na tela… Ou seja, é a mesma coisa que:

import java.util.ArrayList;
import java.util.List;
import java.util.Iterator;

public class ForeachCollection {
public static void main(String[] args) {
List list = new ArrayList();
list.add("Rafael");
list.add("Guimaraes");
list.add("Sakurai");

for( String s : list ) {
System.out.println(s);
}
}
}

Desculpe por ressucitar o tópico, mas tive uma dúvida sobre o assunto e creio que seja melhor ressucitar do que criar outro;

É correto afirmar que o foreach simplesmente usa o Iterator para percorrer as colecoes e listas?

Sim emmanuel, até por que as classes com que o for each trabalha tem que implementar a interface Iterable, que requer que um iterator esteja disponível.

A exceção parece ser os arrays, que podem também ser iterados pelo for each.

Por outro lado, mesmo a classe tendo iterator, não dá para usar ele diretamente via for each, ou seja, não dá para remover itens de uma coleção via iterator, usando o for each.

Tem até uma sugestão de evolução da linguagem de colocarem um parâmetro opcional no for each, para expor esse iterator, o que ficaria como: for (String s : minhaLista, Iterator it) { System.out.println(s); it.remove(); } Ou algo assim.

Hum, certo… mas isso seria o mesmo que instanciar o iterator antes neh
e alias, to ainda tentando assimilar 100% o porque da interface Interable em vez de esses 2 metodos dela serem simplesmente implementado nas proprias collections… Voce teria como me dar uma luz nisso? Como funciona internamente essa interface?

Desculpe a ignorancia, mas estudei recentemente collections e essa questao do interator() ainda ta martelando um poco.

Obrigado pela atencao ! :]

Se quiser saber como funciona internamente, seria melhor baixar o JDK junto com o código-fonte dele.