您的位置:首页 > 房产 > 建筑 > Comparable与Comparator

Comparable与Comparator

2024/12/21 19:33:45 来源:https://blog.csdn.net/Extra_warrior/article/details/141096008  浏览:    关键词:Comparable与Comparator

java.lang.Comparable

        该接口定义了唯一的方法:

public int compareTo(T o);

        比较接口,实现了该接口的类的所有对象就能够被比较,就具备了自然排序能力(nature ordering)。支持排序的容器的基础排序就是调用compareTo方法的,如TreeMap。实现了Comparable接口的类,可以用Collections.sort(List<T> list) ,Arrays.sort(Object[] a) 来排序。

        compareTo方法的入参不能为null,否则运行时会报NullPointerException. 因为该方法会调用入参的属性值进行比较。

java.util.Comparator

@FunctionalInterface
public interface Comparator<T> {default Comparator<T> reversed(){...}default Comparator<T> thenComparing(Comparator<? super T> other) {...}default <U> Comparator<T> thenComparing(Function<? super T, ? extends U> keyExtractor,Comparator<? super U> keyComparator){...}default <U extends Comparable<? super U>> Comparator<T> thenComparing(Function<? super T, ? extends U> keyExtractor){...}default Comparator<T> thenComparingInt(ToIntFunction<? super T> keyExtractor) {...}default Comparator<T> thenComparingLong(ToLongFunction<? super T> keyExtractor) {...}default Comparator<T> thenComparingDouble(ToDoubleFunction<? super T> keyExtractor)     {...}...
}

        比较器接口,可以基于该接口定义需要的比较器。该类是一个函数式接口,接口里有一些常用的比较方法的默认实现,可以直接调用,比Comparable更灵活,能够构造复杂的比较逻辑,可以认为是对Comparable的增强。

// 定义两个比较器,进行两个维度的比较
list.sort(Comparator.comparingInt(Student::textbookScore).thenComparingInt(Student::physicalScore)
);

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com