我想请求一些代码的解释,我将其作为我在

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 max(Comparator super T> comparator)解释了这一切.

由于问题的目的是找到薪水最高的员工,因此将流直接传递给.max,这会消耗员工比较器.由于比较器是功能接口,因此可以作为lambda传递.

.max已经实现了自java 8以来可用的更一般的reduce和collect操作的版本

Integer.compare比较两个int数字.因此.max()返回薪水最高的员工.

另一方面,你的尝试是专门试图获得最高薪水.

干杯.快乐流媒体.

java8 list max_Java 在List 上使用.max()和.stream()相关推荐

  1. NET问答: 如何避免在 EmptyEnumerable 上执行 Max() 抛出的异常 ?

    咨询区 Naor: 我有下面的一个查询: int maxShoeSize = Workers.Where(x => x.CompanyId == 8).Max(x => x.ShoeSiz ...

  2. java8从入门到精通2:强大的Stream

    Stream(流)是什么 流是Java API的新成员,它允许你以声明性方式处理数据集合,你可以把它们看成遍历数据集的高级迭代器.此外,流还可以透明地并行处理,你无需写任何多线程代码了,不过并行处理在 ...

  3. Java8 Lambda表达式(三)Lambda表达式与Stream API

    目录 1 Stream基本概念 1.1 什么是Stream 1.2 Stream的特点 2 Stream API初体验 2.1 构造数据 2.1 使用for循环实现 2.2 使用Lambda表达式结合 ...

  4. 如何使用 Java8 实现观察者模式?(上)

    [编者按]本文作者是 BAE 系统公司的软件工程师 Justin Albano.在本篇文章中,作者通过在 Java8 环境下实现观察者模式的实例,进一步介绍了什么是观察者模式.专业化及其命名规则,供大 ...

  5. java math max_Java Math类静态double max(double d1,double d2)示例

    java math max 数学类静态double max(double d1,double d2) (Math Class static double max(double d1,double d2 ...

  6. Java8新特性学习(lambda,函数式接口,stream,Optional)

    一. Lambda Lambda 是一个匿名函数,我们可以把 Lambda表达式理解为是一段可以传递的代码(将代码像数据一样进行传递).可以写出更简洁.更灵活的代码.作为一种更紧凑的代码风格,使Jav ...

  7. 苹果上的Http Live Stream(HLS)技术初探

    最近在做RTMP转HLS的流媒体服务器项目.需要重新了解Http Live Stream(HLS)技术,于是,总结了一些相关技术细节,如下. 苹果的视频数据流播放技术要求         一如苹果的强 ...

  8. Java8 Stream详解~聚合(max/min/count)

    max.min.count这些字眼你一定不陌生,没错,在mysql中我们常用它们进行数据统计.Java stream中也引入了这些概念和用法,极大地方便了我们对集合.数组的数据统计工作. 「案例一:获 ...

  9. Java8初体验(二)Stream语法详解(转)

    本文转自http://ifeve.com/stream/ Java8初体验(二)Stream语法详解 感谢同事[天锦]的投稿.投稿请联系 tengfei@ifeve.com 上篇文章Java8初体验( ...

最新文章

  1. Linux关闭防火墙、SELinux
  2. android 中的组合控件的设计
  3. CSS中em和px单位的区别(转)
  4. 鄙人之斗,读IT之洋(1)
  5. Z-blog拓源纯净主题
  6. pytest基础入门
  7. nodejs实践录:使用curl测试post请求
  8. Spring :Sprin体系
  9. 状态模式java 在线投票_Java 状态模式
  10. Cocos2d-x 3.X手游开发实例详解
  11. 强化学习中值迭代收敛性推理证明
  12. 怎么用EasyRecovery恢复硬盘内被误删的数据
  13. 高质量计算机学习网站
  14. 电气能插本计算机类吗,2019年专插本电气工程及自动化专业介绍
  15. 新手如何当好办公室主任?傻瓜才做“二当家的”,高手都懂这5个潜规则
  16. C语言编程>第二十二周 ⑥ 请补充fun函数,该函数的功能是:把字符下标能被2和3同时整除的字符从字符串s中删除,把剩余的字符重新保存在字符串s中。
  17. UE4 自定义按键事件(踩坑记录)
  18. linux好几百g空间使用,linux磁盘空间被占用100%-148
  19. Android APP 启动时间测试
  20. PS基础入门教程-如何制作GIF动画

热门文章

  1. 老陈---谈Delphi中SSL协议的应用
  2. R语言基础(1)-帮助函数|工作空间|IO|模块安装
  3. 生物网络中基于节点相似度的链路预测图卷积
  4. 桌面计算机网络图标不见了怎么办,桌面图标不见了怎么办?这里有妙招
  5. JAVA助农电商商城平台毕业设计,JAVA助农销售网站系统设计与实现,毕设作品参考
  6. STM32:PWM驱动LED达到呼吸灯效果(内含:1.接线原理图/实物图+2.代码部分+3.注意事项/补充知识点部分)
  7. ES学习(五)同义词分词器dynamic synonym for ElasticSearch
  8. 六级核心词汇151~200
  9. kafka(组件分析 整合springboot集成 实战)
  10. html 显示天气预报,前端HTML页面获取实时天气预报并展示