java – 在List <>上使用.max()和.stream()
发布时间:2020-12-15 05:14:31 所属栏目:Java 来源:网络整理
导读:我想请求一些代码的解释,我将其作为我在 Java课程中进行的练习的解决方案. 练习是我有一个List of Employees,具有各种属性(薪水,姓名,姓氏,电子邮件……),我正在尝试检索收入最高的员工并打印他们的姓名和薪水. 我能够检索最高薪水而不是员工姓名,如下所示:
我想请求一些代码的解释,我将其作为我在
Java课程中进行的练习的解决方案.
练习是我有一个List<> of Employees,具有各种属性(薪水,姓名,姓氏,电子邮件……),我正在尝试检索收入最高的员工并打印他们的姓名和薪水. 我能够检索最高薪水而不是员工姓名,如下所示: Integer maxSalary; maxSalary = roster .stream() .map(Employee :: getSalary) .collect(Collectors.reducing(Integer :: max) .get(); 然后我给了这个小块代码,它完全正常但我不太确定它为什么有效: Integer maxSalary; Employee emp2 = roster .stream() .max((p1,p2) -> Integer.compare(p1.getSalary(),p2.getSalary())) .get(); System.out.println("The employee who earns the most is :" + emp2.getName + " and earns : " + emp2.getSalary + " a month."); 我知道这是一个使用.max的Lambda表达式我似乎无法理解为什么以及如何工作? 解决方法Optional<T> max(Comparator<? super T> comparator) 解释了这一切.
由于问题的目的是找到薪水最高的员工,因此将流直接传递给.max,这会消耗员工比较器.由于比较器是功能接口,因此可以作为lambda传递.
另一方面,你的尝试是专门试图获得最高薪水. 干杯.快乐流媒体. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |