compareTo(Object obj)是Comparable接口中的方法,compare(Object o1,Object o2)是Comparator接口中的方法其实就是这两个接口有什么区别,
简单的说就是,Comparable是在集合内部定义的方法实现的排序,Comparator是在集合外部定义的方法实现的排序;
比如,你定义的Student类实现了Comparable接口,覆盖compareTo方法,那么Student这个类的对象之间是可以比较的,
这个类组成的集合就可以直接使用sort方法排序
而Comparator可以理解成一种算法的实现,将算法和数据分离
比如,你定义一个MyCom的类implements Comparator
那么你创建的MyCom的对象---new MyCom()就是一个比较器对象,
可以直接传个一个集合---List list = new ArrayList(new MyCom());
这样的话,假如你定义Student时忘了实现Comparable接口,
那么把多个Student对象放到list里,也可以排序,而不必改变Student对象本身,也更加灵活 |