1、二者相同点
二者都是Java的一个接口,都是用来对自定义类进行大小比较的。
自定义类:
public class Person
{
String name;
int age;
}
2、二者区别
Comparable是比较在类内部实现,需要重写compareTo()方法。例如:
public class Person implements Comparable
{
String name;
int age;
public int compareTo(Person anthor)
{
if(name.compareTo(anther.name) == 0) //如果名字一样
{
return this.age - anthor.age;//按年龄比较
}
else
{
return name.compareTo(anther.name);//否则按名字比较
}
}
}
这样可以直接使用Collections.sort(personList)直接排序。
Comparator是定义在类外部的比较器,不改变自定类的结构,需要重写compare()方法。例如:
public PersonComparetor implements Comparator
{
public int compare(Person p1,Person p2)
{
if(p1.name.compareTo(p2.name) == 0) //如果名字一样
{
return p1.age - p2.age;//按年龄比较
}
else
{
return p1.name.compareTo(p2.name));//否则按名字比较
}
}
}
这样可以使用Collections.sort(personList,new personComparator)进行排序。