Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Ajuda com mapToDouble da API Stream

Ola outra vez estou seguindo com meus estudos aqui sobre Stream do Java e estou com dúvida de como fazer uma chamada.

import java.time.LocalDate;
import java.time.chrono.ChronoLocalDate;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.function.Function;
import java.util.stream.Collectors;

public class Check {

    public static void main(String[] args) {
        ArrayList<Person> people = new ArrayList<Person>();
        people.add(new Person("11111-A", "David", "Garcia", LocalDate.now(), 63.2));
        people.add(new Person("14111-A", "Elena", "Lazaro", LocalDate.now(), 60));
        people.add(new Person("13111-A", "Marina", "Garcia", LocalDate.now(), 17.3));
        people.add(new Person("12111-A", "Manuel", "Garcia", LocalDate.now(), 91));

        // Escreva a expressão que  usaa API Stream de Apartado C antes de ".collect"
        ArrayList<Person> nuevaLista = new ArrayList<Person>();

        nuevaLista = (ArrayList<Person>) people.stream().filter(p -> p.getWeight() < 80).collect(Collectors.toList());

        for (Person p : nuevaLista) {
            System.out.println(p);
        }

        // //Escreva a expressão que usa a API Stream a partir "stream()" utilizando o mapToDouble para devolver o peso medio das pessoas na lista people

         System.out.println(people.stream().filter(p -> p.getWeight().mapToDouble(Double::parseDouble) +" kg."));
    }

}

Estou tentando algo assim mas ainda não esta saindo aqui a sintaxe

System.out.println(people.stream().filter(p -> p.getWeight().mapToDouble(Double::parseDouble) +" kg."));
3 respostas
solução!

Boa tarde, meu xará! Como vai?

Para calcular a média, o código ficaria mais ou menos assim:

minhaLista.stream()
    .mapToDouble(Person::getWeight)
    .average()
    .orElse(0);

Dessa forma, será obtido a média dos valores do peso e 0 caso a lista esteja vazia!

Pegou a ideia? Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!

Valeu pela ajuda agora vi como funcionam as chamadas. Tenho uma duvida ainda de como funciona exatamente o Stream.

Pelo que entendi ele pega valores específicos de um collection e com isso gera uma outra lista temporária ?

Opa, Gabriel! Um Stream pode ser formado a partir de uma coleção ou através do método of()! E, para fins de entendimento mais simplificado, os streams podem ser vistos como uma lista, embora não sejam efetivamente uma lista e sim um fluxo de dados!

Para saber mais: https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html