For each no java?

Aew galera gostaria de saber se existe for each no java??

aew abs

para um vetor ou Collection chamado elementos que armazena elementos de um certo tipo T:

for(T elemento: elementos){
   //faça o que quiser com elemento
}

É como nosso amigo Mantu disse, mas vou adicionar só mais uma coisinha!!

for(T elemento: elementos){ //faça o que quiser com elemento }

O “elementos” poderá ser qualquer elemento que implemente a interface java.lang.Iterable, logo pode-se colocar qualquer Collection, Array ou outra instância de uma classe que implemente esta interface!!

public interface Iterable<T>{ public abstract Iterator<T> iterator(); }

Espero ter ajudado!!
Flw aew e t+!!

1 curtida

valewwwww galera era soh um duvida que eu tinhaaa

um abs at todos

Tenho uma duvida pessoal. No caso do for each

for(T elemento: elementos){
2. //faça o que quiser com elemento
3. }

Se o vetor elementos na primeira passada for null, dá erro?

Detalhe: existe desde o java 1.5

[quote=nadiafelix]Tenho uma duvida pessoal. No caso do for each

for(T elemento: elementos){
2. //faça o que quiser com elemento
3. }

Se o vetor elementos na primeira passada for null, dá erro?

[/quote]

Sim:

	public static void main(String[] args) {
		List<String> lista = null;
		
		for(String a : lista){
			
		}
	}

Erro:

Exception in thread "main" java.lang.NullPointerException

E dá NullPointerException porque, na verdade, o foreach usa um Iterator. Tanto que os códigos abaixo correspondem:

for (T elemento : lista) {
// algo aqui
}

// é correspondente à

Iterator<T> iterator = lista.iterator(); // isso daria NPE se lista fosse null, assim como dá no caso do foreach
while (iterator.hasNext()) {
    T elemento = iterator.next();
    // algo aqui
}

É claro que o foreach deixa a leitura do código mais claro, mas a vantagem do Iterator é o método remove (se você tentar remover um elemento via foreach, vai receber um ConcurrentModificationException).