Comparator 重点

2020-08-18  本文已影响0人  holmes000

实现Comparator接口,必须实现下面这个函数:

@Override
public int compare(CommentVo o1, CommentVo o2) {
           return o1.getTime().compareTo(o2.getTime());
}

这个地方很容易记错,所以理解其作用就不会弄错了
这里o1表示位于前面的对象,o2表示后面的对象

返回-1(或负数),表示不需要交换01和02的位置,o1排在o2前面,asc

返回1(或正数),表示需要交换01和02的位置,o1排在o2后面,desc

Comparator.comparing 进行排序 默认就是ASC

查看 Comparator 类内部实现,还有一个 comparing 方法,实现如下

public static <T, U extends Comparable<? super U>> Comparator<T> comparing(
           Function<? super T, ? extends U> keyExtractor)
   {
       Objects.requireNonNull(keyExtractor);
       return (Comparator<T> & Serializable)
           (c1, c2) -> keyExtractor.apply(c1).compareTo(keyExtractor.apply(c2));
   }

keyExtractor.apply这里用到1.8的函数接口 Function

上一篇下一篇

猜你喜欢

热点阅读