Usar "for"para instanciar e aplicar a cada elemento de umaArrayList um metodo

2 respostas
R

ola…tem como fazer um [for] que aplique a cada elemento de uma Array list um metodo ??
queria usar para mostrar quantas portas estao abertas no exercicio abaixo:

https://docs.google.com/viewer?a=v&pid=sites&srcid=ZGVmYXVsdGRvbWFpbnxyYWZhZWxtYXJ0aW5zcG9vfGd4OjM4YWJjM2QzYmI0NWUyYTA

2 Respostas

ViniGodoy

Sim.

Digamos que você tenha um

List<Porta> portas = new ArrayList<>();

E quer listar quais portas estão abertas. Você pode fazer assim:

for (Porta porta : portas) { //Para cada porta em portas if (porta.isAberta()) { System.out.println("A porta " + porta.getNome() + " está aberta"); } }

Outra opção é fazer através do índice. O código abaixo é equivalente ao de cima:

for (int i = 0; i < portas.size(); ++i) { //Para cada índice da lista Porta porta = portas.get(i); //Pega a porta do índice atual (ineficiente em LinkedLists) if (porta.isAberta()) { System.out.println("A porta " + porta.getNome() + " está aberta"); } }

Mas é uma maneira antiquada de se fazer a mesma coisa. Sem falar que essa versão é extremamente ineficiente em LinkedLists.

Por último, você pode usar o iterator, que geralmente só é útil se quiser excluir algo da lista enquanto a percorre.
O código abaixo também é equivalente ao primeiro, tanto em performance, quanto em funcionamento:

Iterator<Porta> it = portas.iterator(); while (it.hasNext()) { //Ainda há portas para percorrer? Porta porta = it.next(); //Pega a próxima da lista if (porta.isAberta()) { System.out.println("A porta " + porta.getNome() + " está aberta"); } }

R

vlw ViniGodoy…tive que fazer adaptaçoes pois a arraylist em questao era um atributo de outro objeto …
mas seus exemplos me “abriram a mente” obrigado

Criado 14 de outubro de 2012
Ultima resposta 14 de out. de 2012
Respostas 2
Participantes 2