【发布时间】:2025-11-24 23:55:01
【问题描述】:
我正在尝试创建类似于Collectors.summingDouble() 的自定义浮动添加。
但我面临 2 个问题,我不确定如何解决。
-
BiConsumer- 第 27 行 - void 方法不能返回值 -
Collectors.of- Line#32 - Collector 类型中的(Supplier,BiConsumer<R,T>,BinaryOperator<R>, Collector.Characteristics...) 方法不适用于 参数(Supplier<Float[]>、BiConsumer<Float,Employee>、BinaryOperator<Float>) 在这里需要做什么来解决这个问题?
public class CustomCollector {
public static void main(String[] args) {
Employee e1=new Employee(1,"Tom",10.2f);
Employee e2=new Employee(1,"Jack",10.4f);
Employee e3=new Employee(1,"Harry",10.4f);
ArrayList<Employee> lstEmployee=new ArrayList<Employee>();
lstEmployee.add(e1);lstEmployee.add(e2);lstEmployee.add(e3);
/* Implementation 1
* double totalSal=lstEmployee.stream().collect(Collectors.summingDouble(e->e.getSal()));
System.out.println(totalSal);
*/
//Implementation 2
Function<Employee,Float> fun=(e)->e.getSal();
BiConsumer<Float,Employee> consumer=(val,e)->val+e.getSal();
BinaryOperator<Float> operator=(val1,val2)->val1+val2;
Supplier<Float[]> supplier=() -> new Float[2];
float FtotalSal=lstEmployee.stream().collect(
Collector.of(supplier,consumer,operator));
System.out.println(FtotalSal);
}
}
class Employee {
int id;
String name;
float sal;
// getters, setter, constructror
}
【问题讨论】:
标签: java java-8 java-stream collectors