sort(List<T> list)
对指定列表按升序进行排序,列表元素需实现Comparable接口。(例如:String ,Integer)
sort(List<T> list, Comparator<? super T> c)
列表元素无需实现Comparable接口,但是需要指定比较规则实现类。
两种啥区别的呢:
第一种使用自身实现了Comparable接口的方法的规则排序,
第二种按照比较器规则排序,有没有实现接口无所谓,因为有比较器。
比如,员工技能按照编号排序又能按照工资排序,一个排序接口如何支持两种呢?有了比较器接口就不一样了,它不需要在本类上实现,可以编写比较规则实现类。
如汽车比较器可以这样写:
按照速度的比较器
public class CarSpeedComparator implements Comparator<Car>{
@Override
public int compare(Car car1, Car car2) {
return (car1.getSpeed()-car2.getSpeed());
}
}
按照重量的比较器
public class CarWeightComparator implements Comparator<Car>{
@Override
public int compare(Car car1, Car car2) {
return (car1.getWeight()-car2.getWeight());
}
}
比较时可以根据场景不同指定不同的比较器
sort(list, CarspeedComparator) 或者sort(list,CarweightComparator)