java中Comparable和Comparator区别和总结
他俩都是用于做比较的接口。
但是区别在于,实现Comparable表示该类支持排序,实现Comparator是定义一个某类的比较器。
所以,Comparable相当于“内部比较器”,Comparator相当于“外部比较器”。
Comparable
实现了该接口,表示该类支持比较排序。实现了此接口的类的对象的列表或数组可以通过Collection.sort或Arrays.sort进行自动排序。
package java.lang;
import java.util.*;
public interface Comparable<T>
{
public int compareTo(T o);
}
举例: Person实现以age字段的排序。
@Lombook
public class Person implements Comparable<Person>
{
String name;
int age;
@Override
public int compareTo(Person p)
{
return this.age-p.getAge();//nagative:<; positive:>; 0:=;
}
//进行比较:
Arrays.sort(persons);
Comparator
如果要实现控制某个类的次序,而该类本身不支持排序,即没有实现Comparable。则可以建立一个该类的比较器来进行排序。这个比较器只需要实现Comparator接口即可。
该接口定义如下
package java.util;
public interface Comparator<T>
{
int compare(T o1, T o2); //必须实现
boolean equals(Object obj); //可以不实现
}
定义person类的年龄比较器
public class PersonComparator implements Comparator<Person>
{
@Override
public int compara(Person o1,Person o2){
return o1.getAge() - o2.getAge();
}
}
//进行比较:
Arrays.sort(persons,new PersonComparator());

浙公网安备 33010602011771号