Collections有两种sort(),底层均是Arrays.sort(arr,c)
- Collections.sort(List list, Comparator c)
–底层是Arrays.sort(arr,c),自定义的ret = comparable(e1,e2),当ret大于0,表示e1 > e2,也即是arr[j - 1] > arr[j],此时需要swap,(数组长度小于7 – 插入排序)。
2.Collections.sort(List list)
–默认Arrays.sort(arr, null)->排序是升序排序,插入排序。
注意:判断条件是-1、0、1,-1表示前面小于后面,0表示相等,1表示前面大于后面 默认是升序排序。
Comparator 和 Comparable 比较
结论:Comparable --可比较的 Comparator --比较器
通过这个单词的含义记忆,String和Integer等对象是以及实现了比较函数compareTo的,所以是可比较的,而我们自定义的类的比较需要我们自己设置度量的参照,因此我们通常是使用Comparator自定义比较器。
能够实现自比较,也就是当前对象和另一个相同类型的对象进行比较的类型,实现Comparable。
不能实现当前对象的比较或者不方便比较的,使用Comparator
String impl Comparable<String >:
int compareTo(String o){}
Integer impl Comparable<Integer >:
int compareTo(Integer o){}
//自定义的比较
User impl Comparator<User>:
int compare(User A, User B){}