For com objeto

Bom dia pessoal!

meu professor usou uma estrutura for que até então não conhecia. Se trata de um forque varre uma lista a procura de objeto:

public void removeContato(String nome) { for (Contato contato : trabalho) { if(contato.getNome().equals(nome)) { trabalho.remove(contato); } }

se o objeto for encontrado ele remove aquele item da lista “trabalho”.

[color=blue]Gostaria de saber como fazer esse for, (só esta parte for(Contato contato : trabalho), na maneira convencional, tipo for(int…). Talvez assim eu compreenda melhor essa estrutura do professor, pois não compreendi essa de “:” (dois pontos)[/color]

Esse for “diferente” é chamado de for-each. Ele percorre todos os elementos da coleção que está após os dois pontos e atribui o elemento atual para a variável que vem antes dos dois pontos. Se olharmos o seu código, ele está percorrendo a coleção trabalho e atribuindo o elemento atual para a variável contato. Por baixo dos panos o que ele faz é o seguinte:

Iterator<String> iterator = trabalho.iterator(); while(iterator.hasNext()) { Contato contato = iterator.nex(); if(contato.getNome().equals(nome)) { trabalho.remove(contato); } }

Dá pra escrever esse for da maneira convencional, ficaria dessa forma (vou considerar que a coleção trabalho é uma implementação de List, um ArrayList, por exemplo):

for(int i = 0; i < trabalho.size(); i++) { Contato contato = trabalho.get(i); if(contato.getNome().equals(nome)) { trabalho.remove(contato); } }

PS.: Sua implementação é perigosa. Ela remove itens da coleção enquanto está percorrendo ela, pode ser que seu código se comporte de maneira anormal por isso.

Para resolver isso faça o for com Iterator e remova o objeto do mesmo. Algo como:

Iterator<Contato> it = trabalho.iterator(); while (it.hasNext()) { Contato contato = it.next(); if (contato.getNome().equals(nome)) it.remove(); }

Boa Tarde tomwel
Cara os exemplos passados acima já vão ajudar muito,mas eu vou te explicar um pouco da minha forma sobre o for-each Blz!
1:Tipo do Objeto 2:Variavel 3:Uma Collection
For( (1)ObjetoCorinthians (2)jogadores : (3) CampeaoInvicto) Vc ira ler essa instrução assim!

Para cada elemento do TIPO (ObjetoCorinthians) que esteja DENTRO de (CampeaoInvicto) ADICIONE ele na [b]VÀRIAVEL (jogadores) que será do mesmo tipo do (ObjetoCorinthians) .

Eai a cada interação do for ele vai adicionando o elemento até que não existam mas nenhum,e dentro do corpo do for-each ele executa a ação que vc colocar para cada elemento.

Mano espero ter ajudado.