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:
Usar "for"para instanciar e aplicar a cada elemento de umaArrayList um metodo
2 Respostas
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");
}
}
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