1.介绍
Java.util.Comparator用于实现对集合进行排序,同时Java8将Compator接口传递给Stream.sorted、Collections.sort
、List.sort
和Arrays.sort
方法,可以通过调用这些方法直接实现比价器的功能。
2.接口中方法详解
int compare(T o1, T o2)
是Compator比较器中的功能方法,用于比较两个对象的顺序,返回0、1、-1
static <T,U> Comparator<T> comparing(Function<? super T,? extends U> keyExtractor, Comparator<? super U> keyComparator)
comparing方法的第一种形式,这种形式需要传递一个函数,从泛型T中提取一个排序键,按照该排序键进行排序,举例如下对子目录subCategoryVoList按照CategoryVo类里面的sortOrder进行排序
subCategoryVoList.sort(Comparator.comparing(CategoryVo::getSortOrder).reversed());
Function<? super T,? extends U> keyExtractor, Comparator<? super U> keyComparator)
comparing方法的第二种形式,我们需要传递一个函数(Function
)和一个比较器(Comparator
)。该方法将先提取一个排序键,并返回一个比较器,使用指定的比较器对该排序键进行比较。举例如下
Comparator<Student> nameComparator = Comparator.comparing(Student::getName, (s1, s2) -> s2.compareTo(s1));