Comparator用法

本文详细介绍了JavaStreamAPI中用于排序的方法,如sorted()和max(),以及Comparator的各种比较方法,包括compare、equals、naturalOrder等,还提供了多个示例展示如何根据对象属性进行排序和多条件排序。这些内容对于理解和使用JavaStream进行数据处理非常有帮助。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、使用方式

1、Stream中sorted()方法

2、Stream中max()方法

 二、具体方法

 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


一、使用方式

  • 1、Stream中sorted()方法

 list.stream().sorted(Comparator.comparing(User::getName))

  • 2、Stream中max()方法

 list.stream().max(Comparator.comparing(User::getName));

 二、具体方法

 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。

 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));

使用Comparator.nullsLast(Date::compareTo),如果是Date类型,用Date::compareTo,如果是String类型用String::compareTo。

source = source.stream().sorted(Comparator.comparing(ReportPO.ReportDTO::getMyTwTime,Comparator.nullsLast(Date::compareTo)).reversed()).collect(Collectors.toList());

 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顺序比较器。

-------------------------------------以下无正文-----------------------------------------------------------

注:仅供学习,记录问题和参考,共勉!

转载来源:

https://www.cnblogs.com/lydms/p/16549180.html#12_thenComparing_189

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值