Collectors.maxBy()和minBy()
Collectors.maxBy()和 minBy()
Java 8
流的新类java.util.stream.Collectors
实现了java.util.stream.Collector
接口,同时又提供了大量的方法对流 (stream
) 的元素执行map
and
reduce
操作,或者统计操作。
Collectors
中的maxBy
& minBy
这两个函数和lambda
中的max
&min
作用相同
maxByAndMinByExample代码
@Test
public void maxByAndMinByExample() {List<String> list = Arrays.asList("1", "2", "3", "4");Optional<String> max = list.stream().collect(Collectors.maxBy((s, v) -> s.compareTo(v)));Optional<String> min = list.stream().collect(Collectors.minBy((s, v) -> s.compareTo(v)));System.out.println(max.get());System.out.println(min.get());
}
maxByAndMinByExample结果
4
1
maxAndMinExample代码
@Test
public void maxAndMinExample() {List<String> list = Arrays.asList("1", "2", "3", "4");Optional<String> max = list.stream().max((s, v) -> s.compareTo(v));Optional<String> min = list.stream().min((s, v) -> s.compareTo(v));System.out.println(max.get());System.out.println(min.get());
}
maxAndMinExample结果
4
1
注意:
经过对比发现,直接使用
man
|min
代码会更简洁、易读值得一提的是
max
&min
&maxBy
&minBy
中所需要的表达式【Comparator
比较器】代码中是使用语法糖的形式写的
其中定义的是两个值的比较,也可以自己写比较器进行调用
public static <T> Collector<T, ?, Optional<T>> minBy(Comparator<? super T> comparator) {return reducing(BinaryOperator.minBy(comparator)); }
因为可以自定义比较器,所以
max
&min
&maxBy
&minBy
中的参数是不限制的,不像Joining
函数仅限于String
一点唠叨:
- 相对于
Collectors.averagingDouble()
来说,方法体只执行一次。 - 相对于
Collectors.averagingDouble()
来说,方法体做出了优化 - 相对于
Collectors.averagingDouble()
来说,这个没有坑 - ……
- 为什么这么提
Collectors.averagingDouble()
,最好看一下—> averagingDouble - 因为
Collectors.averagingDouble()
有坑,有坑,有坑
Collectors.maxBy()和minBy()相关推荐
- 【Kotlin】Kotlin 语言集合中的高阶函数详解 ( 数据类 data class | maxBy | minBy | filter | map | any | count | find )
文章目录 I . List 集合高阶函数引入 II . Kotlin 数据类 ( data class ) III . Java 代码 与 Kotlin 代码实现对比 ( 查询年龄最大的 ) IV . ...
- js 中转换成list集合_java stream中Collectors的用法
简介 在java stream中,我们通常需要将处理后的stream转换成集合类,这个时候就需要用到stream.collect方法.collect方法需要传入一个Collector类型,要实现Col ...
- 用流收集数据Collectors的用法介绍分组groupingBy、分区partitioningBy(一)
文章目录 一.收集器简介 二.归约和汇总 1.查找流中最大值和最小值Collectors.maxBy和,Collectors.minBy 2.汇总 3.连接字符串 4.广义归约汇总 三.分组 1.多级 ...
- JDK12的新特性:teeing collectors
文章目录 简介 talk is cheap, show me the code Teeing方法深度剖析 Characteristics 总结 JDK12的新特性:teeing collectors ...
- java stream中Collectors的用法
文章目录 简介 Collectors.toList() Collectors.toSet() Collectors.toCollection() Collectors.toMap() Collecto ...
- java8 Lambda Stream collect Collectors 常用实例
将一个对象的集合转化成另一个对象的集合 List<OrderDetail> orderDetailList = orderDetailService.listOrderDetails(); ...
- java8 两个list合并_深入介绍和使用 Java 8 的 Collector 接口和 Collectors 工具类
1 概述 java.util.stream.Collector: Collector 接口用于将 Stream 流中的数据加工,转换,处理,最后返回结果. java.util.stream.Colle ...
- collectors 求和_Java-Collectors常用的20个方法
相思相见知何日?此时此夜难为情. pexels-pixabay-267350.jpg 返回List集合: toList() 用于将元素累积到List集合中.它将创建一个新List集合(不会更改当前集合 ...
- Collectors
Collectors它是个工具类,提供了很多静态方法来返回Collector.通常作为Stream.collect()方法的入参,来实现更多的功能. API分类 求平均值 static <T&g ...
- java流式编程(七)Collectors中的常用方法
目录 前言 一.创建实体类 二.测试数据 二.测试方法 1.toCollection(collectionFactory) 2.toList() 3.toSet() 4.toMap(keyMapper ...
最新文章
- ASP.NET 2.0 HttpHandler实现生成图片验证码(示例代码下载)
- pgsql 相关的命令
- Centos 升级MySQL版本或者Yum安装Mysql5.6
- Virtual DOM的简单实现
- C++双目/单目运算符的重载
- linux中统计java数量,linux 统计当前目录下文件数
- php:修改目录下文档权限(777,644 )
- hpux11.31 环境下如何查看磁盘的WWID( scsimgr lun_map)
- JavaScript中的两个等号(==)和三个等号(===)
- thinkcmf5调用指定分类的二级_python机器学习API介绍11: 伯努利贝叶斯分类器
- 【离散数学】集合论 第三章 集合与关系(6) 二元关系的定义、表示和运算及性质
- ps制作哈7海报字体
- 下载视频 用IDM下载的视频花屏
- 伴风网易博客linux,伙伴 - 成凹的日志 - 网易博客
- php网站访问卡顿,网站反应慢,经常卡顿是什么原因?怎么解决?
- 用python画出逻辑斯蒂映射(logistic map)中的分叉图
- 协作:一份来自RChain的倡议书(上篇)
- 1.余弦定理、两角和公式公式复习
- 百度云重置服务器密码,单台或多台腾讯云服务器 CVM 重置实例密码教程
- M1 mac外接显示器休眠后又失败
热门文章
- 服务器tomcat/mysql的一些有关命令
- 移动 web 1px 边框解决方案
- Deep Learning Tutorial - Multilayer perceptron
- Python 操作 mongodb 数据库
- Python 多线程7-线程通信
- MySQL学习笔记——第1章 数据库和MySQL
- javascript 多线程异步队列
- app_offline.htm的作用
- [windpole]SharePoint异常:应用程序试图执行不允许的操作。要授予此应用程序所需的权限,请与系统管理员联系,或在配置文件中更改该应用程序的信任级别。...
- hive對於數據是懶加載的_05-配置数据库的远程连接 创建hive数据库的时候要选择latin1...