sameet90:
Tengo una ArrayList
de 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 map
el 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);