Java中针对类对象的排序比较,提供了两个对应的接口Comparable和Comparator。
Comparable的中文意思就是可被排序的,代表本身支持排序功能。只要我们的类实现了这个接口,那 么这个类的对象就会自动拥有了可被排序的能力。(这就是这是JAVA自带的排序方式,一个针对于int类型大小的排序,一个是针对由字母组成String类型的字母的排序(在底层是将Sting 类型中的每一个字母提取出来作比较,字母顺序小的在前,字母顺序大的在后面))
而且这个排序被称为类的自然顺序。这个类的对象的 列表可以被Collections.sort和Arrays.sort来执行排序。同时这个类的实例具备作为sorted map的key和 sorted set的元素的资格。
这个方法主要就是为了定义我们的类所要排序的方式。compareTo方法用于比较当前元素a与指定元素 b,结果为int值,如果当前元素a-指定元素 b,代表数组或集合是按升序列;如果int=0,代表元素a与b相等;如果指定元素 b-当前元素a,代表数组或集合是按降序列;
Comparator中文译为比较器,它可以作为一个参数传递到Collections.sort和Arrays.sort方法来指定某 个类对象的排序方式。同时它也能为sorted set和sorted map指定排序方式。 Comparator接口内部只有一个比较方法: Comparable可以看做是内部比较器,Comparator可以看做是外部比较器。一个类,可以通过实现 Comparable接口来自带有序性,也可以通过额外指定Comparator来附加有序性, 二者的作用其实是 一致的。
那在什么时候用Comparator呢?当Comparable的排序方式无法满足项目的需求的时候,或者在面对满足多种的排序要求时,就可以用Comparator