Comparator用法

目录

一、使用方式

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 > Comparator naturalOrder()

返回一个以自然顺序比较Comparable对象的比较器 。

 4、 comparing

 简介:

 根据指定值,比较数据大小值

 定义:

 static > Comparator comparing(Function keyExtractor)

接受从类型T中提取Comparable排序键的功能,并返回按该排序键进行比较的Comparator 。 static Comparator comparing(Function keyExtractor, Comparator keyComparator)

接受提取从一个类型排序键的功能T ,并返回一个Comparator ,通过使用指定的排序关键字进行比较Comparator。

 5、 comparingInt

简介:

 比较取出Int值大小

 定义:

 static Comparator comparingInt(ToIntFunction keyExtractor)

接受从类型 T中提取 int排序键的功能,并返回与该排序键进行比较的 Comparator

 使用案例:

 Comparator.comparingInt(User::getAge)

 6、 comparingLong

 简介:

 比较取出Long值大小

 定义:

 static Comparator comparingLong(ToLongFunction keyExtractor)

接受提取功能 long从类型排序键 T ,并返回一个 Comparator通过那种关键的。

 7、 comparingDouble

 简介:

 比较取出Double值大小

 定义:

 static Comparator comparingDouble(ToDoubleFunction keyExtractor) 接受从类型 T中提取 double排序键的功能,并返回一个 Comparator ,该数据按该排序键进行比较。

 8、 nullsFirst

简介: 

 对空值的数据,放在首位

 定义:

 static Comparator nullsFirst(Comparator 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 Comparator nullsLast(Comparator comparator) 
返回一个比较容易的比较器,它将 null设置为大于非空值。

使用案例:

 Comparator.comparing(User::getName, Comparator.nullsLast(String::compareTo))

10、 reversed

简介(先排序再取反)

将之前排序数据,进行翻转

定义:

default Comparator reversed() 返回一个比较器,强制该比较器的相反顺序。

使用案例:

Comparator.comparing(User::getName).reversed(); Comparator.comparing(User::getName, Comparator.nullsLast(String::compareTo)).reversed();

11、 reverseOrder

简介(直接倒序排列)

以某字段倒序方式,对数据进行排序

定义:

static > Comparator reverseOrder()

返回一个与 自然排序相反的比较器。

使用案例:

Comparator.comparing(类::属性一, Comparator.reverseOrder()) Comparator.comparing(User::getName, Comparator.reverseOrder()); Comparator.comparing(User::getName, Comparator.reverseOrder());

12、 thenComparing

简介:

先进行比较后,再使用thenComparing进行排序(多条件)

定义:

default Comparator thenComparing(Comparator other)

用另一个比较器返回一个字典顺序比较器。

default > Comparator thenComparing(Function keyExtractor)

返回具有提取 Comparable排序键的功能的 Comparable顺序比较器。 default Comparator thenComparing(Function keyExtractor, Comparator 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 thenComparingInt(ToIntFunction keyExtractor)

返回具有提取 int排序键的功能的 int顺序比较器。

使用案例:

14、 thenComparingLong

简介:

定义:

default Comparator thenComparingLong(ToLongFunction keyExtractor)

返回具有提取 long排序键的功能的 long顺序比较器。

使用案例:

15、 thenComparingDouble

简介:

定义:

default Comparator thenComparingDouble(ToDoubleFunction keyExtractor)

返回具有提取 double排序键的功能的 double顺序比较器。

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

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

转载来源:

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

你可能感兴趣的:(java,开发语言)