小编典典

该方法Comparator.comparing(…)旨在创建一个Comparator使用基于对象属性的订单进行比较的。当使用lambda表达式i

-> i(这是(int i) -> { return i;

}此处的简短写法)作为属性提供程序函数时,结果Comparator将比较值本身。这工作时,要比较的对象有一个 自然秩序 的Integer了。

所以

Stream.of(1,2,4,3,5).max(Comparator.comparing(i -> i))

.ifPresent(maxInt->System.out.println("Maximum number in the set is " + maxInt));

与…相同

Stream.of(1,2,4,3,5).max(Comparator.naturalOrder())

.ifPresent(maxInt->System.out.println("Maximum number in the set is " + maxInt));

尽管后者更有效,因为它对于具有自然顺序的所有类型都实现为单例(和实现Comparable)。

根本max不需要a 的原因Comparator是因为您使用的泛型类Stream可能包含任意对象。

这允许(例如)使用它streamOfPoints.max(Comparator.comparing(p->p.x))来查找具有最大值的点,x而Point其本身没有自然顺序。或者做类似的事情streamOfPersons.sorted(Comparator.comparing(Person::getAge))。

使用专家时,IntStream您可以直接使用自然顺序,这可能会更有效:

IntStream.of(1,2,4,3,5).max()

.ifPresent(maxInt->System.out.println("Maximum number in the set is " + maxInt));

为了说明“自然顺序”与基于属性的顺序之间的区别:

Stream.of("a","bb","aaa","z","b").max(Comparator.naturalOrder())

.ifPresent(max->System.out.println("Maximum string in the set is " + max));

这将打印

集合中的最大字符串为z

因为Strings 的自然顺序是字典顺序,其中z大于b大于大于a

另一方面

Stream.of("a","bb","aaa","z","b").max(Comparator.comparing(s->s.length()))

.ifPresent(max->System.out.println("Maximum string in the set is " + max));

将打印

集合中的最大字符串为aaa

如流中所有s aaa的最大

长度String。这是一个预期的用例,Comparator.comparing使用方法引用时可以使其更具可读性,即Comparator.comparing(String::length)几乎可以说明一切……

2020-11-01

java lambda max_在Java中使用Lambda表达式查找Max相关推荐

  1. java args例子_Spring AOP中使用args表达式的方法示例

    本文实例讲述了Spring AOP中使用args表达式的方法.分享给大家供大家参考,具体如下: 一 配置 xmlns:xsi="http://www.w3.org/2001/XMLSchem ...

  2. java lambda做参数_Java中的Lambda参数

    我的追求是如何在函数中将lambda表达式作为参数? 我的意图是,当我执行sum方法时,方法accept中的参数被对象延续使用并使用(是吗?),我的疑问是我如何做才能使该对象延续成为使用value1 ...

  3. java依赖什么意思,JavaEE中的依赖性——依赖查找

    关于依赖性管理我们要介绍的第一个策略就是依赖查找(dependency lookup).这种策略是JavaEE中传统形式的依赖性管理,这里可以看到JavaEE规范中的JNDI(Java Naming ...

  4. Java的lambda实战(二)集合中的lambda

    文章目录 1.背景 2.集合中的lambda 2.1.stream 2.2.操作集合 3.总结 1.背景 本章梳理一下常见的集合使用. 集合中lambda使用概念:https://blog.csdn. ...

  5. 深入学习Java8 Lambda (default method, lambda, function reference, java.util.function 包)

    Java 8 Lambda .MethodReference.function包 多年前,学校讲述C#时,就已经知道有Lambda,也惊喜于它的方便,将函数式编程方式和面向对象式编程基于一身.此外在使 ...

  6. 在Java语言的if语句是什么表达式,if语句中的条件表达式中只能使用

    if语句中的条件表达式中只能使用关系或逻辑表达式吗?别的人十句话都不会伤到小编,但你的一句话就可以把小编伤得撕心裂肺. 不是,可以用任意表达式. if语句是指编程语言(包括c语言,C#,,java,V ...

  7. 《转》IN 查询时出现ORA-01795:列表中的最大表达式数为1000

    问题描述: SQL进行IN查询时出现:java.sql.SQLException: ORA-01795: 列表中的最大表达式数为 1000 解决办法: 问题原因是:SQL进行IN查询时,IN中的数据量 ...

  8. ORA-01795: 列表中的最大表达式数为 1000

    1.美图 2.报错 ### Error querying database. Cause: java.sql.SQLSyntaxErrorException: ORA-01795: 列表中的最大表达式 ...

  9. 工作流中的UEL表达式的使用

    公共spring配置文件: Xml代码   <?xml version="1.0" encoding="UTF-8"?> <beans xml ...

最新文章

  1. 如何生成安全的密码 Hash:MD5, SHA, PBKDF2, BCrypt
  2. 赵丽颖固然漂亮,可这份Hadoop核心教程也不差呀
  3. 继Science发文后,Nature也发文评论曹雪涛“误用图片”调查结果
  4. vim显示行号、多行复制和删除
  5. 百度SEO Cloud-Platform(后台管理系统) v3.1.0
  6. 视频会议平台Zoom市值近1200亿美元,投资人李嘉诚赚翻了
  7. 【白皮书分享】创新中国2030:释放技术红利,解锁增长动能-埃森哲.pdf(附下载链接)...
  8. layer 一张表按钮根据一个id 查询相关信息
  9. bond的主备模式_生产环境中Linux bonding 主备模式slave网卡切换的方法
  10. 自学Python Day1
  11. Web性能测试工具:http_load安装使用简介
  12. 浅谈SQL注入防御手段
  13. python爬取b站up主粉丝信息_使用Python爬取B站数据
  14. 行程单批量打印软件(eTerm航空电子客票行程单打印软件)
  15. 财会法规与职业道德【6】
  16. 快手申请快手联盟商选商标,商标注册的申请程序有哪些?
  17. vscode生成的.BROWSE.VC.DB文件超大问题
  18. 希沃白板5和html5,希沃白板5应用的基础教程
  19. 乌云章华鹏:如何构建高效的安全运维服务平台
  20. 【转】如何从计算视角研究网络传播影响力最大化问题?

热门文章

  1. CoreAnimation编程指南(六)动画
  2. linux 防火墙 ftp,RedHat6 建立基于防火墙和SELinux的虚拟用户vsFTP
  3. 迁移学习训练集准确率一直上不去_可以提高你的图像识别模型准确率的7个技巧...
  4. html跑马灯_用Excel居然能做“跑马灯”,而且还这么简单!
  5. 交叉线和直通线各自用于什么场合?为什么?_【小麓讲堂】偏振光与LCD、OLED、3D、AR到底有什么关系?...
  6. word2vector数据集样式_这样做数据可视化驾驶舱,高端大气,一目了然,领导不点赞都难...
  7. linux离线安装redmine_Feem:免流量跨平台文件传输工具,支持离线分享
  8. axure html 360安装扩展,win10系统360浏览器添加Axure扩展的操作方法
  9. web mysql 界面表命名规范_MySql数据库表字段命名及设计规范
  10. java ldap添加用户名密码_java ldap用户密码md5加密