ArrayList - FOR EACH
Laço de repetição que não usa índices, e sim os objetos de um ArrayList:
Ex.:
class Vetor {
double media (ArrayList <double> v){
double soma= 0;
for (double d : v) {
soma = soma + d;
}
return soma / v.size();
}
}
Como funciona: Nesse metodo de ArrayList, foi declarada uma variavel SOMA com valor zerado;
Para cada double d pertencente a v, ou seja, para cada unidade pertencente a v, soma-se esse d a variavel SOMA e retorna a divisao do resultado pelo tamanho do ArrayList.
Na pratica: Na classe teste, adicionamos ao ArrayList v os valores 5 e 10 [p.add(5,0)], ou seja, sera um arraylist com 5,0 na posicao zero e 10,0 nao posicao 1, tamanho = 2. O metodo acima recebe cada um desses valores e os soma : soma = 5,0 >>> soma = 15,0. Dai divide 15,0 (soma) por 2 (tamanho do Arraylist) = 7,5.
Onde esta "for (double d : v){", double d poderia ser qualquer outro nome, mas deve ser double, que e o mesmo da classe e da variavel soma: "for (double cachorro : v){" para cada unidade pertencente a v. Dá-se um nome para que se possa usar no futuro: soma = soma + cachorro;.
O teste:
class Teste{
public static void main (String [] args){
ArrayList <double> p = new ArrayList <double>();
p.add(5,0);
p.add(10,0);
Vetor v = new Vetor();
System.out.printLn (v.media(p));
}
}
Por ser double, o valor adicionado deve ser um numero real e nao inteiro.
For each nao precisa de índice e só funciona com ArrayList.
Joao de Souza