Java中的排序分为两种,分别为Comparable接口和Comparator接口
Comparable在lang包中,lang包存有java基本类;
Comparator在util工具包中;
类似于String、包装类等实现了Comparable接口,重写了CompareTo(Object obj)方法,给出了比较两个对象大小的方式所以可以直接进行调用;
1、如果当前对象this大于形参对象obj,那 么返回正数;
如果当前对象this小于形参对象obj,那么返回负数;
如果当前对象this等于形参对象obj,那么返回0。
对于自定义类来说,如果需要排序,那么首先就要让自定义类实现Comparable接口
背景
当元素没有实现Comparable接口的时候,同时又不方便修改代码或者实现Comparable接口的排序规则不适合当前的操作,可么便可以考虑使用Comparator的对象来进行排序,强行对多个对象进行整体排序进行比较。
使用方法
重写compare(Object o1,Object o2)这个方法,比较o1和o2的大小:如果方法的返回值为正数,那么o1大于o2,如果返回值为负数,那么o1小于o2;如果返回值为0,那么o1和o2相等;
可以将Comparator传递给sort方法,如(Collection.sort或者Arrays.sort)
还可以通过Comparator来控制某些数据结构,如有序set或者有序映射的顺序,或者为那些没有自然排序的对象Collection提供排序。