实现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
网友评论