我有一个 ArrayList
用户定义对象 employee as
class Employee {
String name;
Double age;
Double salary
}
我正在尝试通过以下代码将上面的列表缩减为一个流
Double totalSalary = empList.stream().parallel().filter(x-> x.getname().equalsIgnoreCase("XYZ")).reduce(0,(subTotal, sal)-> subTotal + dp.getSalary(), DoubleExpression::add);
这不会编译并给出错误。我怎样才能实现我想要的目标?
最佳答案
首先,您必须将 Employee 对象映射
到双倍薪水。然后只有你可以做减少步骤。此外,归约步骤采用标识元素和二元运算符。但是你在那里传递了三个参数,这也是有缺陷的。
double totalSalary = empList.stream()
.filter(x -> x.getName().equalsIgnoreCase("XYZ"))
.mapToDouble(Employee::getSalary)
.sum();
这是等效的减少。请注意,0 是此归约的标识元素。
double totalSalary = empList.stream()
.filter(x -> x.getName().equalsIgnoreCase("XYZ"))
.mapToDouble(Employee::getSalary)
.reduce(0, Double::sum);
关于java - 如何使用 Double 数据类型减少流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58355180/