Comparator使用简介
1、Lambda表达式
2、Comparator使用简介
文章目录
- 一、使用方式
- 1、Stream中`sorted()`方法
- 2、Stream中`max()`方法
- 3、Stream中排序`JSONObject`方法
- 二、具体方法
- 1、 compare
- 2、 equals
- 3、 naturalOrder
- 4、 comparing
- 5、 comparingInt
- 6、 comparingLong
- 7、 comparingDouble
- 8、 nullsFirst
- 9、 nullsLast
- 10、 reversed
- 11、 reverseOrder
- 12、 thenComparing
- 13、 thenComparingInt
- 14、 thenComparingLong
- 15、 thenComparingDouble
- 三、Xmind整理格式
一、使用方式
1、Stream中sorted()
方法
list.stream().sorted(Comparator.comparing(User::getName))
2、Stream中max()
方法
list.stream().max(Comparator.comparing(User::getName));
3、Stream中排序JSONObject
方法
JSONObject job01 = new JSONObject();
job01.put("startTime", "2022-01-13");
job01.put("count", 1);
JSONObject job02 = new JSONObject();
job02.put("startTime", "2022-01-15");
job02.put("count", 13);
ArrayList<JSONObject> jsonList = new ArrayList<>();
jsonList.add(job01);
jsonList.add(job02);// 排序
List<JSONObject> collect = jsonList.stream().sorted(Comparator.comparing(a -> ((JSONObject) a).getDate("startTime"), Comparator.reverseOrder()).thenComparing(c -> ((JSONObject) c).getInteger("count"), Comparator.reverseOrder())).collect(Collectors.toList());
二、具体方法
1、 compare
简介:
比较2个值
定义:
int compare(T o1, T o2)
比较其两个参数的顺序。
使用案例:
2、 equals
简介:
比较值是否等于另一个值
定义:
boolean equals(Object obj)
指示某个其他对象是否等于此比较器。
使用案例:
3、 naturalOrder
简介:
定义:
static <T extends Comparable<? super T>> Comparator<T> naturalOrder()
返回一个以自然顺序比较Comparable对象的比较器 。
使用案例:
4、 comparing
简介:
根据指定值,比较数据大小值
定义:
static <T,U extends Comparable<? super U>> Comparator<T> comparing(Function<? super T,? extends U> keyExtractor)
接受从类型T中提取Comparable排序键的功能,并返回按该排序键进行比较的Comparator<T> 。
static <T,U> Comparator<T> comparing(Function<? super T,? extends U> keyExtractor, Comparator<? super U> keyComparator)
接受提取从一个类型排序键的功能T ,并返回一个Comparator<T> ,通过使用指定的排序关键字进行比较Comparator。
使用案例:
Comparator.comparing(类::属性一);
Comparator.comparing(User::getName,Comparator.reverseOrder());
5、 comparingInt
简介:
比较取出Int值大小
定义:
static <T> Comparator<T> comparingInt(ToIntFunction<? super T> keyExtractor)
接受从类型 T中提取 int排序键的功能,并返回与该排序键进行比较的 Comparator<T> 。
使用案例:
Comparator.comparingInt(User::getAge)
6、 comparingLong
简介:
比较取出Long值大小
定义:
static <T> Comparator<T> comparingLong(ToLongFunction<? super T> keyExtractor)
接受提取功能 long从类型排序键 T ,并返回一个 Comparator<T>通过那种关键的。
使用案例:
7、 comparingDouble
简介:
比较取出Double值大小
定义:
static <T> Comparator<T> comparingDouble(ToDoubleFunction<? super T> keyExtractor)
接受从类型 T中提取 double排序键的功能,并返回一个 Comparator<T> ,该数据按该排序键进行比较。
使用案例:
8、 nullsFirst
简介:
对空值的数据,放在首位
定义:
static <T> Comparator<T> nullsFirst(Comparator<? super T> comparator)
返回一个空友好的比较是认为 null小于非空。
使用案例:
Comparator.comparing(User::getName, Comparator.nullsFirst(String::compareTo));
9、 nullsLast
简介:
对空值的数据,放在末位
定义:
static <T> Comparator<T> nullsLast(Comparator<? super T> comparator)
返回一个比较容易的比较器,它将 null设置为大于非空值。
使用案例:
Comparator.comparing(User::getName, Comparator.nullsLast(String::compareTo))
10、 reversed
简介(先排序再取反):
将之前排序数据,进行翻转
定义:
default Comparator<T> reversed()
返回一个比较器,强制该比较器的相反顺序。
使用案例:
Comparator.comparing(User::getName).reversed();
Comparator.comparing(User::getName, Comparator.nullsLast(String::compareTo)).reversed();
11、 reverseOrder
简介(直接倒序排列):
以某字段倒序方式,对数据进行排序
定义:
static <T extends Comparable<? super T>> Comparator<T> reverseOrder()
返回一个与 自然排序相反的比较器。
使用案例:
Comparator.comparing(类::属性一, Comparator.reverseOrder())
Comparator.comparing(User::getName, Comparator.reverseOrder());
Comparator.comparing(User::getName, Comparator.reverseOrder());
12、 thenComparing
简介:
先进行比较后,再使用thenComparing进行排序(多条件)
定义:
default Comparator<T> thenComparing(Comparator<? super T> other)
用另一个比较器返回一个字典顺序比较器。
default <U extends Comparable<? super U>> Comparator<T> thenComparing(Function<? super T,? extends U> keyExtractor)
返回具有提取 Comparable排序键的功能的 Comparable顺序比较器。
default <U> Comparator<T> thenComparing(Function<? super T,? extends U> keyExtractor, Comparator<? super U> keyComparator)
返回具有提取要与给定 Comparator进行比较的键的功能的字典顺序比较 Comparator 。
使用案例:
Comparator.comparing(User::getName).thenComparingInt(User::getAge);
Comparator.comparing(User::getName, Comparator.nullsFirst(String::compareTo)).thenComparing(User::getAge, Comparator.reverseOrder());
13、 thenComparingInt
简介:
定义:
default Comparator<T> thenComparingInt(ToIntFunction<? super T> keyExtractor)
返回具有提取 int排序键的功能的 int顺序比较器。
使用案例:
14、 thenComparingLong
简介:
定义:
default Comparator<T> thenComparingLong(ToLongFunction<? super T> keyExtractor)
返回具有提取 long排序键的功能的 long顺序比较器。
使用案例:
15、 thenComparingDouble
简介:
定义:
default Comparator<T> thenComparingDouble(ToDoubleFunction<? super T> keyExtractor)
返回具有提取 double排序键的功能的 double顺序比较器。
三、Xmind整理格式
CSDN地址:
https://download.csdn.net/download/weixin_44624117/84426426
Comparator使用简介相关推荐
- java comparable null_Java中Comparable和Comparator你知多少?
前言: 我喜欢这种遨游在Java的世界里,精心研究学习新鲜事物的感觉,即便再小再细再微不足道的东西,也让我乐此不疲,同时我也更愿意将我所会的东西分享出来供大家学习以及方便自己日后回顾.好了,闲话不多说 ...
- JAVA中Comparable和 Comparator的区别
Comparable 和 Comparator比较 简介 Comparable 1.1说明 1.2举例 Comparator 1.1说明 1.2举例 相同点: 不同点: 简介 Comparable 和 ...
- sparkcore分区_Spark学习:Spark源码和调优简介 Spark Core (二)
本文基于 Spark 2.4.4 版本的源码,试图分析其 Core 模块的部分实现原理,其中如有错误,请指正.为了简化论述,将部分细节放到了源码中作为注释,因此正文中是主要内容. 第一部分内容见: S ...
- Java 中 Comparable 和 Comparator 比较
为什么80%的码农都做不了架构师?>>> 本文,先介绍Comparable 和Comparator两个接口,以及它们的差异:接着,通过示例,对它们的使用方法进行说明. Comp ...
- Java中Comparable和Comparator区别小结
阅读目录 一.Comparable简介 二.Comparator简介 三.Comparable和Comparator区别比较 回到顶部 一.Comparable简介 Comparable是排序接口.若 ...
- Comparable与Comparator用法详解
简介: Comparable接口出自java.lang包,它有一个compareTo(Object obj)方法用来比较或排序 Comparator接口出自java.util包,它有一个compare ...
- Comparable接口和Comparator接口的比较
1.Comparable详解 1.1Comparable概述 来自java.lang.Comparable.Comparable是 排序接口.若一个类实现了Comparable接口,就意味着该类支持排 ...
- Java15-day06【Set、HashSet、LinkedHashSet、TreeSet、Comparable、Comparator、泛型类、可变参数的使用】
视频+资料(工程源码.笔记)[链接:https://pan.baidu.com/s/1MdFNUADVSFf-lVw3SJRvtg 提取码:zjxs] Java基础--学习笔记(零起点打开java ...
- Java中Comparable和Comparator接口区别分析
本文要来详细分析一下Java中Comparable和Comparator接口的区别,两者都有比较的功能,那么究竟有什么区别呢,感兴趣的Java开发者继续看下去吧. Comparable 简介 Comp ...
最新文章
- 实验6 触发器的使用
- PHP_crontab 漏洞,shopex 4.8.5.45144 \core\include_v5\crontab.php 远程shell写入漏洞
- 第三课--EFM32GG11系列--串口接收不定长度数据的几种方式
- 我们已经不用 AOP 做日志很久了!
- NIO 之 FileChannel
- Redis Cluster 集群模式原理和动态扩容
- 工作总结3:axios里面的主要参数
- 【编译打包】nagios-4.0.4-2.el6.src.rpm
- datax,同步数据,mysql sqlserver 双向
- 计算机故障排除pdf,计算机常见故障排除方法【藏】.pdf
- PHP调用拼多多接口以及配置签名
- 大学计算机应用基础教学设计,大学计算机应用基础电子教案设计.doc
- js自定义随机数插件:yiRan
- 百分之九十的人都不清楚自己找的是Kanban软件还是看板软件(附Kanban工具测评)
- IIC和SPI的异同
- 图片占位符生成器holder.js的简单使用
- 榆熙电商:拼多多商家一年能进行几次申诉?
- ensp WLAN二层零漫游
- ctfshow web入门 XXE web373~web378
- 汇编语言 VSCode编辑器的下载、安装与配置使用
热门文章
- IT人应具备的五种能力
- 【ScottPlot】使用ScottPlot创建实时动态图
- 自动驾驶丨吉利选择Zenuity为其辅助和自动驾驶软件首选供应商
- 视频数据:彩色数据采集(Color Data)
- 华为路由器删除permanent参数_【教程】利用4G无线路由器设置APN接入图像综合平台...
- 苏宁金融会员领域驱动设计实践
- 安装mongodb以及使用Robomongo
- 测试网易软件的word,Office Word 桌面版开始测试微软编辑器:检查你的拼写和语法...
- properties介绍
- 最简单的js去除首尾空格