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使用简介相关推荐

  1. java comparable null_Java中Comparable和Comparator你知多少?

    前言: 我喜欢这种遨游在Java的世界里,精心研究学习新鲜事物的感觉,即便再小再细再微不足道的东西,也让我乐此不疲,同时我也更愿意将我所会的东西分享出来供大家学习以及方便自己日后回顾.好了,闲话不多说 ...

  2. JAVA中Comparable和 Comparator的区别

    Comparable 和 Comparator比较 简介 Comparable 1.1说明 1.2举例 Comparator 1.1说明 1.2举例 相同点: 不同点: 简介 Comparable 和 ...

  3. sparkcore分区_Spark学习:Spark源码和调优简介 Spark Core (二)

    本文基于 Spark 2.4.4 版本的源码,试图分析其 Core 模块的部分实现原理,其中如有错误,请指正.为了简化论述,将部分细节放到了源码中作为注释,因此正文中是主要内容. 第一部分内容见: S ...

  4. Java 中 Comparable 和 Comparator 比较

    为什么80%的码农都做不了架构师?>>>    本文,先介绍Comparable 和Comparator两个接口,以及它们的差异:接着,通过示例,对它们的使用方法进行说明. Comp ...

  5. Java中Comparable和Comparator区别小结

    阅读目录 一.Comparable简介 二.Comparator简介 三.Comparable和Comparator区别比较 回到顶部 一.Comparable简介 Comparable是排序接口.若 ...

  6. Comparable与Comparator用法详解

    简介: Comparable接口出自java.lang包,它有一个compareTo(Object obj)方法用来比较或排序 Comparator接口出自java.util包,它有一个compare ...

  7. Comparable接口和Comparator接口的比较

    1.Comparable详解 1.1Comparable概述 来自java.lang.Comparable.Comparable是 排序接口.若一个类实现了Comparable接口,就意味着该类支持排 ...

  8. Java15-day06【Set、HashSet、LinkedHashSet、TreeSet、Comparable、Comparator、泛型类、可变参数的使用】

    视频+资料(工程源码.笔记)[链接:https://pan.baidu.com/s/1MdFNUADVSFf-lVw3SJRvtg   提取码:zjxs] Java基础--学习笔记(零起点打开java ...

  9. Java中Comparable和Comparator接口区别分析

    本文要来详细分析一下Java中Comparable和Comparator接口的区别,两者都有比较的功能,那么究竟有什么区别呢,感兴趣的Java开发者继续看下去吧. Comparable 简介 Comp ...

最新文章

  1. 一个虚函数和虚继承的问题。
  2. java5的递归算法_Java基础入门(五)之方法以及递归算法
  3. ACCESS TOKEN
  4. 已经使用过的rails插件
  5. 戛古 Kakku, Kekku-掸邦 shan state
  6. java nextintln_Java对正则表达式的支持(二)
  7. HttpClient工具类
  8. vshost32.exe停止工作
  9. mysql之触发器before和after的区别
  10. ice 服务java连接,java - ICE中的连接计数 - 堆栈内存溢出
  11. ToolsOh第4批收录
  12. [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket错误解决方法总结
  13. 信息收集--wmic命令
  14. ipad怎样和计算机连接网络,ipad怎样连接电脑itunes
  15. 微信域名防封系统,APP下载链接域名怎么避免在微信中被封
  16. 15支持哪些数据库版本 tfs_版本和支持的功能 - SQL Server 2016 | Microsoft Docs
  17. 逆向经验 + 逆向工具
  18. python中fock的使用_Python中fock()函数如何使用
  19. Android游戏: 华容道
  20. 如何check tcpdump 和pcap log以及 DPL logging

热门文章

  1. ​中润光学开启申购:预计IPO市值约21亿元,张平华为实控人​
  2. 如何将word人名制成表格
  3. 华为鸿蒙系统展示,华为鸿蒙2.0正式发布,你的华为手机在首批更新名单中吗?...
  4. 假冒院士?知名大学副校长,15篇论文被撤!
  5. PPT文档中如何添加图片
  6. 微信服务号VS订阅号
  7. Java项目:新闻管理系统(java+javaweb+jdbc)
  8. MySQL数据库联合索引的命中规则
  9. 分享3个音频合并无缝衔接软件,音频合并超简单
  10. 知乎热议:28 岁程序员期权过亿,彪悍从字节退休,旅居日本开温泉酒店