¿Cómo reducir los arroyos con doble tipo de datos

sameet90:

Tengo una ArrayListde empleado objeto definida por el usuario como

class Employee {
    String name;
    Double age;
    Double salary
}

Estoy tratando de reducir la lista anterior como una corriente a través del siguiente código

Double totalSalary = empList.stream().parallel().filter(x-> x.getname().equalsIgnoreCase("XYZ")).reduce(0,(subTotal, sal)-> subTotal + dp.getSalary(), DoubleExpression::add);

Esto no se compila y da un error. ¿Cómo puedo lograr mi objetivo deseado?

Ravindra Ranwala:

Primero usted tiene que mapel objeto Empleado en un doble salario. Sólo entonces se puede hacer la etapa de reducción. Por otra parte, la etapa de reducción tiene un elemento identidad y un operador binario. Pero de haber pasado tres argumentos allí, que está viciado también.

double totalSalary = empList.stream()
    .filter(x -> x.getName().equalsIgnoreCase("XYZ"))
    .mapToDouble(Employee::getSalary)
    .sum();

Aquí está la reducción equivalente. Tenga en cuenta que 0 es el elemento de identidad para esta reducción.

double totalSalary = empList.stream()
    .filter(x -> x.getName().equalsIgnoreCase("XYZ"))
    .mapToDouble(Employee::getSalary)
    .reduce(0, Double::sum);

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=312542&siteId=1
Recomendado
Clasificación