Duvida com for each

Ola sou novo no Fórum, se ja tiver a resposta do que quero saber me desculpe nao achei.
oque é for- each (quando e melhor usa-lo)

For each é o nome dado à uma estrutura que serve para iterar pelos itens de uma coleção.

Em Java 5 ou superior, a sintaxe dele é:

for (Tipo item : conjunto) { // Operações para cada item deste conjunto vão aqui }
Onde Tipo é a classe do objeto, item é nome da variável dentro do contexto do loop, e conjunto é de onde estamos pegando os itens, geralmente conjunto é uma Collection.

Antes do Java 5, uma das formas de executar esse tipo de loop era com:

for (Iterator it = conjunto.iterator(); it.hasNext();) { Tipo item = (Tipo) it.next(); // Operações para cada item deste conjunto vão aqui }

Para uma explicação mais aprofundada: http://en.wikipedia.org/wiki/Foreach

Esqueci de falar

Ambos os loops que postei acima fazem a mesma coisa, iteram pelas coleções, mas existe uma diferença fundamental entre esses dois códigos:

O segundo deixa disponível o iterador da coleção, o que permite a chamada de três métodos: hasNext(), next() e remove(). O último é a diferença principal, com ele você pode iterar pela coleçao e remover o objeto caso queira. Em certos códigos, isso pode ajudar a aumentar a velocidade de execução do programa.

valeu Renrutal, obrigado pela ajuda.!!

o foreach eh util pra facilitar a codificacao,
e quando nao se necessita remover nenhum item
da colecao, apenas iterar sobre eles

[quote=Reilander]o foreach eh util pra facilitar a codificacao,
e quando nao se necessita remover nenhum item
da colecao, apenas iterar sobre eles[/quote]

Se você usar um for assim

for (int contador = 0; contador < list.size(); contador++)

E apresentar eles, você não vai estar retirando o mesmo das coleções. Até mesmo se você usar o .get() você não retira.
Você só remove um membro da coleção se usar .remove().

dedejava, valeu mesmo ja estava pensando em postar, e voce me ajudou, obrigado

onde esta escrito que SO ITERA NO FOREACH?
em nenhum momento disse que “get()” remove.
disse que no foreach nao eh possivel remover. logo,
soh se usa quando se quer apenas iterar.

[quote=dedejava]Se você usar um for assim

for (int contador = 0; contador < list.size(); contador++)

E apresentar eles, você não vai estar retirando o mesmo das coleções. Até mesmo se você usar o .get() você não retira.
Você só remove um membro da coleção se usar .remove().[/quote]

O problema de usar get(int) é que a performance dele depende da Collection usada. É garantido ser O(1) somente em classes que implementem a interface RandomAccess; entretanto, para essas classes, esse tipo de loop roda mais rápido que o loop baseado em iterator.