以下是尝试使用流查找Max的推荐方法吗?

List<Employee> emps = new ArrayList<>();
emps.add(new Employee("Roy1",32));
emps.add(new Employee("Roy2",12));
emps.add(new Employee("Roy3",22));
emps.add(new Employee("Roy4",42));
emps.add(new Employee("Roy5",52));

Integer maxSal= emps.stream().mapToInt(e -> e.getSalary()).reduce((a,b)->Math.max(a, b));
System.out.println("Max " + maxSal);

它导致编译错误-这是什么意思?
error: incompatible types: OptionalInt cannot be
nverted to Integer
                  Integer maxSal= emps.stream().mapToInt(e -> e.getSalary()).
uce((a,b)->Math.max(a, b));

最佳答案

回答您的问题,问题是reduce方法将返回OptionalInt,因此,如果要具有Integer值,则需要调用.getAsInt()方法。

    Integer maxSal = emps.stream().mapToInt(e -> e.getSalary())
         .reduce((a,b)->Math.max(a, b)).getAsInt();

如果列表中没有最大数量,您将得到一个需要处理的NoSuchElementException

09-07 16:38