Java流: map()转换后Collectors.maxBy(Double::max)报错

Java流: map()转换后, Collectors.maxBy(Double::max)报错

报错信息

age是Integer类型, (Integer::max), (Integer::min)正确
salary是Double类型, (Double::max), (Double::min)报错:
Bad return type in method reference: cannot convert double to int
尝试rebuid, recompile, mvn clean/compile都无效

图片描述

相关代码

@Test
    public void minByOrMaxByTest() {
        // maxBy minBy 按照比较器中的比较结果筛选, 筛选Double类型(salary)时maxBy报错(原因未知)  TODO
        System.out.println(Employee.EMPLOYEE_LIST.parallelStream().map(Employee::getAge).collect(Collectors.maxBy(Integer::min)).orElse(null));
        System.out.println(Employee.EMPLOYEE_LIST.parallelStream().map(Employee::getAge).collect(Collectors.minBy(Integer::min)).orElse(null));
        System.out.println(Employee.EMPLOYEE_LIST.parallelStream().map(Employee::getSalary).collect(Collectors.minBy(Double::min)));
        System.out.println(Employee.EMPLOYEE_LIST.parallelStream().map(Employee::getSalary).collect(Collectors.maxBy(Double::max)));
    }
    
@Data
@AllArgsConstructor
public class Employee {
    private String name;
    private Integer age;
    private Double salary;
}
阅读 6.8k
1 个回答

public static <T> Collector<T, ?, Optional<T>> minBy(Comparator<? super T> comparator) {

return reducing(BinaryOperator.minBy(comparator));

}
Collectors的minBy方法的参数是Comparator,
Comparator ——> int compare(T o1, T o2); 需要返回一个int类型,
Integer::min 和 Integer::max 符合
Double::max 和 Double::min返回double 不符合

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题