简述Comparable和Comparator两个接口的区别
Comparable:强行对实现它的每个类对象进行整体排序。这种排序我们一般把它称之为自然排序,类的compareTo方法被称之为它的自然比较方法。只能在类中实现compareTo方法一次,不能经常修改类的代码实现自己想要的排序。实现此接口的对象列表(和数组)可以通过Collections.sort()(和Arrays.sort())进行自动排序,对象可以用作有序映射中的键或者有序集合中的元素,无序指定比较器。
Comparator:强行对某个对象进行整体排序。可以将Comparator传递给sort()方法(如Collections.sort()后者Arrays.sort()),从而允许在排序顺序上实现精确控制。还可以使用Comparator来控制某些数据结构(有序的set或者是有序的映射)的顺序,或者为那些没有自然顺序的对象Collection提供排序。
Collections.sort(list,new Comparator(){
@Override
public int compare(Student o1,Student o2) {
int num = o1.getAge() - o2.getAge();
if( num == 0) {
num = o2.getName().charAt(0) - o1.getName().charAt(0);
}
return num;
}
})
System.out.println(list);
}
}
浙公网安备 33010602011771号