Alguém sabe como pegar os valores dos produtos numa arraylist e fazer uma média desses valores?

6 respostas Resolvido
java
Avell

Eu sei que tenho que fazer uma variável pra armazenar esses valores porém eu não consigo pegar na lista

6 Respostas

staroski
double soma = 0;
for (Produto produto : listaDeProdutos) {
    soma += produto.getValor();
}
double media = soma / (double) listaDeProdutos.size();
Avell

Tá deu certo, mas aí eu quero pegar o menor valor dos produtos e o maior

double soma = 0.0;

//calculando a média dos valores

for (Produtos produtos : p) {

soma += produtos.getValor();

}

double media = soma / (double) p.size();
System.out.println("Valor mínimo: R$ "+ " Valor máximo: R$ "+   " Valor médio: R$ "+ media);

o valor médio já foi, agr eu queria fazer algo perecido com isso, só que com o valor menor e o maior

staroski

Ué, cria uma variável para o maior valor e outra pro menor, dentro do laço você vai comparando o valor atual da iteração.

L
Solucao aceita

Outra alternativa utilizando a API Streams.

List<Produto> produtos = Arrays.asList(new Produto(10), new Produto(15), new Produto(8), new Produto(120), new Produto(100));
        
        // media
        OptionalDouble media = produtos.stream().mapToDouble(Produto::getValor).average();
        if (media.isPresent()) {
            System.out.println(media.getAsDouble());
        }
        
        // menor
        OptionalDouble min = produtos.stream().mapToDouble(Produto::getValor).min();
        if (min.isPresent()) {
            System.out.println(min.getAsDouble());
        }
        
        // maior
        OptionalDouble max = produtos.stream().mapToDouble(Produto::getValor).max();
        if (max.isPresent()) {
            System.out.println(max.getAsDouble());
        }
A

thanks for the awesome information.

A

thanks my issue has been fixed.

Criado 20 de janeiro de 2022
Ultima resposta 18 de dez. de 2022
Respostas 6
Participantes 4