零基础做网站网站seo在线诊断
compareTo和compare的区别
- compareTo是comparable(可比较的)接口的方法。
- 当需要对一个对象或一个数组进行排序时,必须实现comparable接口,重写compareTo方法。
- 重写compareTo方法的对象进行自然排序(也叫整体排序,内部排序)。
- 通过Collections.sort()或Array.sort()自然排序;
- 通过TreeSet树形结构自然排序;
- compare是comparator(比较器)接口的方法。
- compare方法中调用的是对象实现comparable接口重写的compareTo方法。
private static final Comparator<User> comparator = new Comparator<User>() {public int compare(User user1, User user2) {return user1.compareTo(user2);//运用User类的compareTo方法比较两个对象 } }
- 作为一个外部比较器,通过自身的compare方法定制排序规则
- 将比较器对象传到Collections.sort()或Arrays.sort()中对目标定制排序;
- 将比较器对象传到TreeSet树形结构定制排序;
- compare方法中调用的是对象实现comparable接口重写的compareTo方法。
附:
compareTo的底层实现
compareTo方法底层是timsort算法,插入,归并,快排的高级合并。
参考:https://blog.csdn.net/meiLin_Ya/article/details/80821126