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;
}
public static <T> Collector<T, ?, Optional<T>> minBy(Comparator<? super T> comparator) {
}
Collectors的minBy方法的参数是Comparator,
Comparator ——> int compare(T o1, T o2); 需要返回一个int类型,
Integer::min 和 Integer::max 符合
Double::max 和 Double::min返回double 不符合