java - 如何使用 Double 数据类型减少流

标签 java lambda java-8 java-stream

我有一个 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/

相关文章:

Java volatile 和副作用

java - 我将如何使用 Maven 安装 JCE Unlimited Strength Policy 文件?

Java 8 List<Map<String, Object>> 到 List<Map<String, Object>> 按键分组并按值计数

java - 有没有办法用 Java 中已经包含的值初始化 SortedMap<Integer, String> ?

java - 强制 JButton 不绘制背景

java - 如何在@ElementCollection 上指定主键

java - 创建一个方法,该方法接受可能具有不同类型的可变长度的 Function 参数

c# - 从单个数据表 c# 填充类的嵌套列表

java - 如何在 java 中使用 Optional 检查是否为 null 以及是否具有特定值?

UTC 0日期部分中的java sql时间戳出错